我最近通过源代码编译在OS X 10.8.3上安装了Ruby 2.0.0。我用
检查了版本$ ruby --version
ruby 2.0.0p195 (2013-05-14 revision 40734) [x86_64-darwin12.3.0]
我用
检查了我的宝石版本$ gem env
RubyGems Environment:
- RUBYGEMS VERSION: 2.0.3
- RUBY VERSION: 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]
- INSTALLATION DIRECTORY: /Library/Ruby/Gems/1.8
- RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
- EXECUTABLE DIRECTORY: /usr/bin
- RUBYGEMS PLATFORMS:
- ruby
- universal-darwin-12
- GEM PATHS:
- /Library/Ruby/Gems/1.8
- /Users/ehartsuyker/.gem/ruby/1.8
- /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- :benchmark => false
- :sources => ["http://rubygems.org/", "http://gemcutter.org"]
- REMOTE SOURCES:
- http://rubygems.org/
- http://gemcutter.org
我注意到这里报告的Ruby版本与我安装的版本不匹配。我不知道这是否重要。
我有一段名为encrypy.rb的简单代码,我正在运行。安装' rsa' gem with gem install rsa。
require 'rubygems'
require 'rsa'
key = RSA::KeyPair.generate(128)
ciphertext = key.encrypt("message")
puts(ciphertext)
当我运行它时,它会发出错误消息,说它无法找到宝石。
$ ruby encrypt.rb -Idirectory '/Library/Ruby/Gems/1.8'
/usr/local/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require': cannot load such file -- rsa (LoadError)
from /usr/local/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require'
from encrypt.rb:2:in `<main>'
所以问题是,为什么Ruby没有找到宝石,尽管它似乎知道它在哪里?我该如何解决?
答案 0 :(得分:1)
Ruby 1.8.7随OS X一起提供。似乎gem
看到的是该版本,而不是手动安装的2.0.0。正如其他人已经建议的那样,使用RVM或rbenv(一个取决于个人偏好)使得处理不同的ruby环境变得更加容易。您可以在以下位置找到这些工具和说明:
RVM:https://rvm.io/