我想在一个支持Ruby和一些Ruby gems的Web主机上使一些gems工作,但不支持我需要使用的一些gems。
按照我在 这里 找到的说明,我将原始gem位置保留在我的gem路径中,并将我的路径添加到 ~/.gemrc 中的 /path/to/my/home/gems。
gemhome: /users/home/myuser/gems
gempath:
- /usr/local/lib/ruby/gems/1.8
- /users/home/mysuser/gems
我手动下载了一些 gem 包并使用 gem 命令的--local和--install-dir选项进行安装。然后我运行了 "gem list" 命令,实际上可以看到我安装在用户目录下的 gem 包以及普通系统路径中的原始 gem 包。如果我启动 IRB 或者执行 ruby -e 命令,所有系统 gem 都能正常工作。然而,我无法加载我的用户目录中安装的 gem 包。
$ ruby -r rubygems -e "require 'nokogiri'"
/usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:21:in `require__': no such file to load -- nokogiri (LoadError)
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:21:in `require'
from -e:1
我甚至尝试了老派的require_gem:
$ irb -r rubygems
irb(main):001:0> require_gem 'nokogiri'
Gem::LoadError: Could not find RubyGem nokogiri (> 0.0.0)
from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:204:in `report_activate_error'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:141:in `activate'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:37:in `require_gem_with_options'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:31:in `require_gem'
from (irb):1
从我的“宝石清单”中,我可以看到:
nokogiri (1.3.3)
Nokogiri is an HTML, XML, SAX, and Reader parser
我在所有用户目录安装 gem 时遇到了相同的问题。我错过了什么吗?编辑:这不是一个 Rails 应用程序。这是一个命令行应用程序。该程序将由我的用户帐户执行,就像上面显示的测试一样。
编辑:根据 Rafe 的建议,我查看了 IRB 中的 Gem.path。它仅列出系统 gem 路径 /usr/local/lib/ruby/gems/1.8,并没有列出我的用户目录路径。