Mac上的Ruby 1.9 - Rails仍然加载1.8库?

时间:2009-06-09 22:57:24

标签: ruby-on-rails ruby

所以我将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会话并查看$:变量,该变量会显示搜索任何requireload个来电的所有位置,该列表为作为OEM Ruby安装的一部分的Ruby 1.8位置!

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,所以我确保shebang是正确的,它是:

#!/usr/local/bin/ruby

我想在在这些位置搜索包含没有任何内在错误,但它看起来像是唯一的位置 - 它永远不会搜索lib / ruby​​19目录中的标准库。是什么给了什么?

更新

如果我有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的错误版本。但就像我说的那样,shebang系似乎正在与正确的Ruby可执行文件进行对话。

如果我直接用irb调用ruby,那么我会得到1.9包含的正确列表:

ruby /usr/local/bin/irb

真的很奇怪......

2 个答案:

答案 0 :(得分:1)

好吧,我最终做的只是注销终端会话并开始新会议。现在当我运行irb时,我得到了1.9个位置的正确列表。

终端确实认为之前正在运行正确的终端,但是:

which irb
/usr/local/bin/irb

耸肩

答案 1 :(得分:0)

听起来好像是Bash PATH缓存的情况。将来,可以使用hash -r清除。