Проблема в понимании того, какую версию Ruby я "на самом деле" / "эффективно" использую - PullRequest
1 голос
/ 14 марта 2012

Я работаю в Mac OS и использую Snow Leopard версии 10.6.8. Я использую RVM для управления установками Ruby (и, таким образом, для использования среды Ruby on Rails), но у меня возникают проблемы, когда я вижу некоторые результаты в журнале, в основном связанные с текущей версией, когда я получаю предупреждение / сообщение об ошибке. То есть я ранее запускал эти команды в окне терминала:

$ which ruby
/<ABSOLUTE_PATH>/.rvm/rubies/ruby-1.9.2-p290/bin/ruby

$ rvm install 1.9.3
Installing Ruby from source to: /<ABSOLUTE_PATH>/.rvm/rubies/ruby-1.9.3-p0, this may take a while depending on your cpu(s)...
ruby-1.9.3-p0 - #fetching 
...
Fetching yaml-0.1.4.tar.gz to /<ABSOLUTE_PATH>/.rvm/archives
Extracting yaml-0.1.4.tar.gz to /<ABSOLUTE_PATH>/.rvm/src
Configuring yaml in /<ABSOLUTE_PATH>/.rvm/src/yaml-0.1.4.
Compiling yaml in /<ABSOLUTE_PATH>/.rvm/src/yaml-0.1.4.
Installing yaml to /<ABSOLUTE_PATH>/.rvm/usr
ruby-1.9.3-p0 - #configuring 
ruby-1.9.3-p0 - #compiling 
ruby-1.9.3-p0 - #installing 
Removing old Rubygems files...
Installing rubygems-1.8.10 for ruby-1.9.3-p0 ...
Installation of rubygems completed successfully.
ruby-1.9.3-p0 - adjusting #shebangs for (gem irb erb ri rdoc testrb rake).
ruby-1.9.3-p0 - #importing default gemsets (/<ABSOLUTE_PATH>/.rvm/gemsets/)
Install of ruby-1.9.3-p0 - #complete

$ which ruby
/<ABSOLUTE_PATH>/.rvm/rubies/ruby-1.9.2-p290/bin/ruby

$ rvm use --default 1.9.3
Using /<ABSOLUTE_PATH>/.rvm/gems/ruby-1.9.3-p0

$ which ruby
/<ABSOLUTE_PATH>/.rvm/rubies/ruby-1.9.3-p0/bin/ruby

Пока здесь, кажется, все в порядке.

Однако, когда я получаю какую-то ошибку, как в этот вопрос, связанный с гемом DelayedJob , я вижу в журнале, что система все еще использует Ruby 1.9.2-p290:

# Note the 'ruby-1.9.2-p290'
undefined method `send_register_email\' for #<Syck::DomainType:0x00000108e2f870>\n/<ABSOLUTE_PATH>/.rvm/gems/ruby-1.9.2-p290/gems/delayed_job-3.0.1/lib/delayed/performable_mailer.rb:6:in
...

Что не так? Как я могу решить проблему?

1 Ответ

1 голос
/ 14 марта 2012

, как @sarnold предполагает, что вам придется перезапускать любые долго работающие процессы, такие как демоны.

Другое дело, что если он запущен на вкладке cron, убедитесь, что задача cron запущена как правильный пользователь.,Если вы настроили RVM для пользователя, а не для системы, то пользователь root или любой другой пользователь, для которого вы не настроили RVM, будут использовать системный ruby.

Вы аккуратно выхватили ""

Обратите внимание, что это может легко произойти с

sudo rake some:task # that has to do something as root like open a low port or move a file

, это будет работать от имени пользователя root и не будет производить правильный поиск RVM.Чтобы это исправить, есть

rvmsudo rake some:task
...