Итак, я установил 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
Это действительно странно ...