Rails - установлен самый новый драгоценный камень, но приложение устарело

Я работаю над Bluehost. Я установил 3.2.8 жемчужину рельсов, и теперь я получаю это:

> gem list --local | grep rails
rails (3.2.8)

Но:

rails --version
Rails 2.3.11

Как я могу сделать так, чтобы команда "rails" использовала последний драгоценный камень? Я предполагаю, что это как-то связано с моей переменной $PATH, но я почти ничего не знаю об этом.

Кроме того, команда gem and rails вызывает некоторые ошибки, которые выглядят следующим образом:

Invalid gemspec in [XXX]: invalid date format in specification: "YYY"

Я не уверен, что это связано (и мне интересно, что вызывает такие ошибки в любом случае).

1 ответ

Попробуйте запустить эту команду:

curl -L https://get.rvm.io | bash -s stable --ruby --rails

Он устанавливает RVM, который поддерживает отдельные гемы для каждой установленной версии Ruby. --ruby а также --rails аргументы говорят ему установить ruby ​​и rails при установке RVM. Установка RVM автоматически обновляет $PATH и любые другие необходимые переменные среды.

В конце установки вам будет предложено запустить:

source ~/.rvm/scripts/rvm

что сделает эти переменные среды изменения немедленно вступают в силу. Кроме того, вы можете выйти и затем снова войти в систему.

Бежать rails -v а также ruby -v в этот момент, и вы должны увидеть, что они указывают на новую версию. Бежать bundle install из каталога вашего приложения RoR, и все необходимые вам гемы должны быть установлены в ~/.rvm/gems/ruby-/gems.

На этом этапе вы можете удалить / удалить любые gems/rails/ruby ​​перед установкой RVM.

РЕДАКТИРОВАТЬ 17.10.2012: не важно мой ответ. Даже если бы возможно было запустить Rails 3.x с установленным в настоящее время Ruby 1.8 (см. Этот вопрос Stackru), вы не сможете запустить Ruby 1.9.x с помощью Bluehost Shared Hosting. Ваш единственный выбор (на данный момент) - VPS хостинг.

Причина в том, что Passenger Phusion привязан к версии Ruby, установленной в / usr / lib, которую вы не сможете изменить без root-доступа. Даже несмотря на то, что вы можете установить любую версию Ruby с RVM, вы не будете заставлять Пассажира говорить с ним, и поэтому ваш проект rails не будет использовать его жемчужины.

Другие вопросы по тегам