Я начал использовать rbenv для управления версиями ruby и обнаружил, что irb не загружает правильную версию ruby и версию gem. Вот подробности.
irb Gem.path говорит:
`>> Gem.path
=> ["/Users/Air/.gem/ruby/1.8", "/Library/Ruby/Gems/1.8", "/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8"]`
Теперь в irb, если я наберу: put $:
`>> puts $:
/Library/Ruby/Site/1.8
/Library/Ruby/Site/1.8/powerpc-darwin11.0
/Library/Ruby/Site/1.8/universal-darwin11.0
/Library/Ruby/Site
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/vendor_ruby/1.8 /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/vendor_ruby/1.8/universal-darwin11.0
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/vendor_ruby
/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-darwin11.0
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin11.0`
В командной строке набираю: gem env.
`RubyGems Environment:
- RUBYGEMS VERSION: 1.8.10
- RUBY VERSION: 1.9.2 (2011-07-09 patchlevel 290) [x86_64-darwin11.0.1]
- INSTALLATION DIRECTORY: /Users/Air/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1
- RUBY EXECUTABLE: /Users/Air/.rbenv/versions/1.9.2-p290/bin/ruby
- EXECUTABLE DIRECTORY: /Users/Air/.rbenv/versions/1.9.2-p290/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-darwin-11
- GEM PATHS:
- /Users/Air/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1
- /Users/Air/.gem/ruby/1.9.1
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- http://rubygems.org/`
Я вижу, что irb загружает неправильную версию Ruby и загружает неправильный путь к Gem. Может кто-нибудь поможет понять, как это исправить. Я использую rbenv для управления версиями Ruby, не знаю, как это влияет на ситуацию. Совет?
rbenv global
. В точных инструкциях указаноglobal Set or show the global Ruby version
. Если я запустилrbenv global
в своей оболочке, будет написано 1.9.2-p290 - person alenm   schedule 03.12.2011which irb
для подтверждения). Этот irb загрузит что-то вроде/usr/bin/ruby
, что обойдёт rbenv. Я не знаком с rbenv, но я постоянно вижу здесь, на SO, проблемы того же типа. Переименуйте общесистемный irb во что-то вродеirb_old
и убедитесь, что ваш каталог rbenv находится на вашем путиecho $PATH
, и вы должны заставить его работать. - person Casper   schedule 03.12.2011echo $PATH
, я получаю/Users/Air/.rbenv/shims:/Users/Air/.rbenv/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
... а теперь, когда я печатаюirb
, я получаюcommand not found
Я не думаю, что это решение, но спасибо за предложение. И я перезапустил свою оболочку. - person alenm   schedule 03.12.2011irb1.9.1
. Когда существует установленный Ruby 1.8, 1.9 не будет переопределять символические ссылкиirb
,gem
,ruby
и т. Д. - person Linuxios   schedule 03.12.2011which ruby
говорит? Если он загружает рубин в ваш каталог rbenv, отредактируйте первую строку в вашемirb_old
на#!/usr/bin/env ruby
и переименуйте обратно вirb
. А теперь попробуйте еще раз. Я не знаю, почему irb не был установлен должным образом ... но описанный выше обходной путь должен это исправить. - person Casper   schedule 03.12.2011#!/usr/bin/env ruby
, теперь irb ищет правильную версию Ruby и путь к Gem. Огромное спасибо. - person alenm   schedule 03.12.2011