IRB加载错误的Ruby和Gem路径,使用rbenv

3

我开始使用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中,如果我输入:puts $:
`>> 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设置当前的Ruby版本的? - Andrew Marshall
1
你可能已经在系统路径中安装了irb(运行which irb来确认)。这个irb会加载类似于/usr/bin/ruby的东西,这将绕过rbenv。我不熟悉rbenv,但我经常在SO上看到同样类型的问题。将系统范围内的irb重命名为irb_old,并确保你的rbenv目录在你的路径中echo $PATH,然后你应该可以让它工作。 - Casper
有可能是 Ruby 1.9.2 没有安装 irb,所以它无法工作。我该如何安装 irb? - alenm
1
你可能想尝试使用 irb1.9.1。当已经安装了 Ruby 1.8 时,1.9 不会覆盖符号链接 irbgemruby 等。 - Linuxios
1
which ruby 会输出什么?如果它加载了你的rbenv目录中的ruby,那么请编辑你的 irb_old 的第一行为 #!/usr/bin/env ruby,然后将其重命名为 irb。现在再试一次。我不知道为什么irb没有被正确安装,但上述解决方法应该可以解决问题。 - Casper
显示剩余3条评论
2个回答

10

确保您正确设置了路径并在使用的 shell 中初始化了 rbenv。

我已将以下行添加到我的 .bash_profile 文件中:

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

我曾经遇到与你相似的问题,直到我想起了这一点。

同时也要记得设置全局的rbenv Ruby版本。


6

使用rbenv安装了ruby后。

你是否使用以下命令重新构建了shim二进制文件?

$ rbenv rehash


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接