Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby新手,我在加载路径方面遇到了问题_Ruby_Gem - Fatal编程技术网

Ruby新手,我在加载路径方面遇到了问题

Ruby新手,我在加载路径方面遇到了问题,ruby,gem,Ruby,Gem,我最近通过源代码编译在OSX10.8.3上安装了Ruby2.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

我最近通过源代码编译在OSX10.8.3上安装了Ruby2.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
我用我的电脑检查了我的gem版本

$ 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的简单代码。使用gem安装“rsa”gem后,请安装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 encrypt.rb-Idirectory'/Library/ruby/Gems/1.8'
/usr/local/lib/ruby/2.0.0/rubygems/core\u ext/kernel\u require.rb:45:在'require'中:无法加载这样的文件--rsa(LoadError)
from/usr/local/lib/ruby/2.0.0/rubygems/core\u ext/kernel\u require.rb:45:in'require'
来自encrypt.rb:2:in`'

所以问题是,尽管Ruby似乎知道宝石在哪里,但为什么它找不到呢?如何修复它呢?

Ruby 1.8.7随OS X一起提供。看来
gem
看到的是该版本,而不是手动安装的2.0.0。正如其他人已经建议的那样,使用RVM或rbenv(取决于个人喜好)使处理不同的ruby环境变得更加容易。您可以在以下位置找到这些工具及其说明:

RVM:


rbenv:

try Ruby的加载路径与GEM路径不同,如您所见。安装了两个Ruby Env。您可以手动设置GEM_路径和GEM_HOME,或者使用rvm/rbenv@ArieShaw rbenv更棒:)是的。RVM解决了所有问题。谢谢