ruby - Ruby 新手,遇到 LOAD_PATH 问题

标签 ruby rubygems

我最近通过源代码编译在 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 版本

$ 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 install rsa 安装“rsa”gem 后。

require 'rubygems'
require 'rsa'

key = RSA::KeyPair.generate(128)
ciphertext = key.encrypt("message")
puts(ciphertext)

当我运行它时,它给出了一个错误,说它找不到 gem。

$ 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 似乎知道它在哪里,但为什么它没有找到它?我该如何解决?

最佳答案

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

RVM:https://rvm.io/

rbenv: https://github.com/sstephenson/rbenv

关于ruby - Ruby 新手,遇到 LOAD_PATH 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17334359/

相关文章:

ruby-on-rails - 在 Windows 和 Linux/OS X 的 Gemfile 中指定不同的 Ruby 版本(例如 1.9.3 与 2.1)?

ruby-on-rails - 使用 Rails 模板将 gem 添加到特定环境的任何方法?

heroku - 我怎样才能使awesome_print成为heroku控制台中的默认值?

ruby - 管理 ruby​​ gem 的冲突版本

ruby - 使用 Rails 3 从数据库中获取数据数组

ruby-on-rails - 什么是 before_create、validates_presence_of、has_many 等?

ruby-on-rails - rails 邮箱未定义方法 `mailboxer_email'

ruby-on-rails - 适合定制 CMS 的第三方评论系统好吗?

ruby-on-rails - Rails with devise,第一次登录后不重定向

ruby - 通过命令行将变量传递给 Ruby 脚本