代码之家  ›  专栏  ›  技术社区  ›  Rob Cameron

Mac上的Ruby1.9-Rails还在加载1.8库吗?

  •  2
  • Rob Cameron  · 技术社区  · 16 年前

    所以,走吧 ruby --version 在命令行给我:

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

    irb $: 变量,该变量显示搜索到的所有位置 require load 调用时,列表是Ruby1.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
    .
    

    内部评级 可执行文件仍然指向1.8,因此我确保shebang是正确的,它是:

    #!/usr/local/bin/ruby
    

    我想这没有什么内在的问题 在这些位置中搜索include,但看起来只有这些位置-它永远不会在lib/ruby19目录中搜索标准库。有什么好处?

    更新

    如果我有鲁比给我 $: 内部评级 看起来列表是正确的:

    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
    .
    

    所以,这听起来像是错误的版本 正在调用。但正如我所说,shebang行似乎在与正确的Ruby可执行文件进行通信。

    如果我调用 内部评级 具有 ruby 然后我就得到了1.9的正确列表,包括:

    ruby /usr/local/bin/irb
    

    这是 真正地

    2 回复  |  直到 16 年前
        1
  •  1
  •   Rob Cameron    16 年前

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

    不过,终端之前肯定认为它运行的是正确的:

    which irb
    /usr/local/bin/irb
    

        2
  •  0
  •   rnicholson    16 年前

    听起来像是Bash路径缓存的例子。将来,可以使用 hash -r