Ruby 1.9 на Mac - Rails все еще загружает 1.8 библиотеки? - PullRequest
2 голосов
/ 10 июня 2009

Итак, я установил Ruby 1.9 в / usr / local / bin и сохранил Ruby 1.8.7 в / usr / bin. Переименовал все мои 1.8 исполняемые файлы ruby, rails, rdoc и т. Д. В ruby18, rails18 и т. Д.

Итак, ввод ruby --version в командной строке дает мне:

ruby 1.9.1p129 (2009-05-12 revision 23412) [i386-darwin9.7.0]

Если я запускаю сеанс irb и смотрю на переменную $:, которая показывает все местоположения, в которых ищутся любые вызовы require или load, список - это местоположения Ruby 1.8, которые являются частью OEM Ruby установить!

test
/Library/Ruby/Site/1.8
/Library/Ruby/Site/1.8/powerpc-darwin9.0
/Library/Ruby/Site/1.8/universal-darwin9.0
/Library/Ruby/Site
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/powerpc-darwin9.0
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin9.0
.

Я подумал, что, возможно, исполняемый файл irb все еще указывает на 1.8, поэтому я убедился, что шебанг был верным и это:

#!/usr/local/bin/ruby

Полагаю, нет ничего плохого в том, что также выполняет поиск в этих местах для включений, но похоже, что это единственные места - он никогда не будет искать даже стандартные библиотеки в каталоге lib / ruby19. Что дает?

Обновление

Если у меня есть Ruby, дайте мне содержимое $: напрямую и пропустите irb, похоже, список правильный:

ruby -e 'puts $:'

/usr/local/lib/ruby19/1.9.1/test
/usr/local/lib/ruby19/gems/1.9.1/gems/actionmailer-2.3.2/lib
/usr/local/lib/ruby19/gems/1.9.1/gems/actionpack-2.3.2/lib
/usr/local/lib/ruby19/gems/1.9.1/gems/activerecord-2.3.2/lib
/usr/local/lib/ruby19/gems/1.9.1/gems/activeresource-2.3.2/lib
/usr/local/lib/ruby19/gems/1.9.1/gems/activesupport-2.3.2/lib
/usr/local/lib/ruby19/gems/1.9.1/gems/daemons-1.0.10/lib
/usr/local/lib/ruby19/gems/1.9.1/gems/eventmachine-0.12.8/lib
/usr/local/lib/ruby19/gems/1.9.1/gems/rack-1.0.0/bin
/usr/local/lib/ruby19/gems/1.9.1/gems/rack-1.0.0/lib
/usr/local/lib/ruby19/gems/1.9.1/gems/rails-2.3.2/bin
/usr/local/lib/ruby19/gems/1.9.1/gems/rails-2.3.2/lib
/usr/local/lib/ruby19/gems/1.9.1/gems/thin-1.2.2/bin
/usr/local/lib/ruby19/gems/1.9.1/gems/thin-1.2.2/lib
/usr/local/lib/ruby19/site_ruby/1.9.1
/usr/local/lib/ruby19/site_ruby/1.9.1/i386-darwin9.7.0
/usr/local/lib/ruby19/site_ruby
/usr/local/lib/ruby19/vendor_ruby/1.9.1
/usr/local/lib/ruby19/vendor_ruby/1.9.1/i386-darwin9.7.0
/usr/local/lib/ruby19/vendor_ruby
/usr/local/lib/ruby19/1.9.1
/usr/local/lib/ruby19/1.9.1/i386-darwin9.7.0
.

Итак, звучит так, будто вызывается не та версия irb. Но, как я уже сказал, строка Шебанга говорит о правильном исполняемом файле Ruby.

Если я вызову irb с помощью ruby напрямую, то получу правильный список 1.9, включающий:

ruby /usr/local/bin/irb

Это действительно странно ...

Ответы [ 2 ]

1 голос
/ 10 июня 2009

Ну, в итоге я просто вышел из сеанса терминала и начал новый. Теперь, когда я запускаю irb, я получаю правильный список из 1.9 местоположений.

Терминал уверен, что раньше он работал правильно:

which irb
/usr/local/bin/irb

пожав плечами

0 голосов
/ 10 июня 2009

Похоже, может быть, это случай кэширования Bash PATH. В будущем можно использовать hash -r для очистки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...