Ruby gem列出,但不会加载(用户目录中的gem,而不是ruby目录)

Mat*_*att 14 ruby rubygems

我试图让一些宝石在支持ruby和一些红宝石的web主机上工作,但不是我需要使用的一些宝石.

按照我在这里找到的说明,我将原始宝石位置保存在我的宝石路径中,并将我自己的/ path /添加到/ my/home/gems到〜/ .gemrc

gemhome: /users/home/myuser/gems
gempath:
- /usr/local/lib/ruby/gems/1.8
- /users/home/mysuser/gems
Run Code Online (Sandbox Code Playgroud)

我手动下载了一些gem,并使用gem命令的--local和--install-dir选项进行安装.然后我做了一个"宝石列表",实际上可以看到我在我的用户目录中安装的宝石,以及正常系统路径中的原始宝石.

如果我踢IRB或做ruby -e,所有系统宝石都能正常工作.但是,我无法加载我的用户目录加载的gems:

$ 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
Run Code Online (Sandbox Code Playgroud)

我甚至尝试了旧学校的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
Run Code Online (Sandbox Code Playgroud)

从我的"宝石列表"中我可以看到:

nokogiri (1.3.3)
Nokogiri is an HTML, XML, SAX, and Reader parser
Run Code Online (Sandbox Code Playgroud)

我对所有用户目录安装宝石都有同样的问题.我在这里错过了什么?

编辑:这不是一个rails应用程序.这适用于命令行应用程序.该程序将由我的用户帐户执行,就像上面显示的测试一样.

编辑:Per Rafe的建议,我看了IRB的Gem.path.它只是列出了系统宝石路,/usr/local/lib/ruby/gems/1.8,而不是我的用户目录路径为好.

Kha*_*din 38

我遇到了同样的问题,我通过在ruby文件的顶部添加以下内容来修复它

require 'rubygems'
Run Code Online (Sandbox Code Playgroud)

希望有所帮助


Mat*_*att 5

我当前的工作(但不太理想)解决方案是做一个

Gem.path.push "/path/to/my/gems"
Run Code Online (Sandbox Code Playgroud)

我说不太理想,因为这是我期望.gemrc的内容自动为我做的,对于我的用户环境下的所有ruby执行.不知道为什么不 - 但上述至少有效.