我看了下面的内容: How do RVM rubies find gems?
并认为那里的建议可能会有所帮助,例如
要求' rubygems'
$ echo $ GEM_HOME
但可以使用一些关于如何申请的建议 - 我的ruby文件确实有
要求' rubygems'
在要求其他宝石(无法找到)之前指定的指令...我在错误日志中收到这样的错误:
/var/www/.rvm/rubies/ruby-2.2.5/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- /var/www/.rvm/gems/ruby-2.2.5/gems/json-2.0.1/lib/json/ (LoadError)
from /var/www/.rvm/rubies/ruby-2.2.5/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from printers.rb:14:in `<main>'
/var/www/.rvm/rubies/ruby-2.2.5/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- nokogiri/nokogiri (LoadError)
from /var/www/.rvm/rubies/ruby-2.2.5/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from /var/www/.rvm/gems/ruby-2.2.5/gems/nokogiri-1.6.8/lib/nokogiri.rb:32:in `rescue in <top (required)>'
from /var/www/.rvm/gems/ruby-2.2.5/gems/nokogiri-1.6.8/lib/nokogiri.rb:28:in `<top (required)>'
from /var/www/.rvm/rubies/ruby-2.2.5/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from /var/www/.rvm/rubies/ruby-2.2.5/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
我没有在任何地方设置$ GEM_HOME,安装了几个红宝石供人们在共享的Web服务器上使用(脚本最终通过web / Apache访问)。脚本引用了正确的rvm ruby - 例如,
#!/var/www/.rvm/rubies/ruby-2.2.5/bin/ruby
为了让用户脚本工作,必须指定所需gem的完整路径,例如
require "/var/www/.rvm/gems/ruby-2.2.5/gems/json-stream-0.2.1/lib/json/stream"
require "/var/www/.rvm/gems/ruby-2.2.5/gems/nokogiri-1.6.8/lib/nokogiri/nokogiri
并且在许多情况下,需要编辑gem .rb文件以指定它们自己需要的文件的完整路径。
rvm环境/ gems安装在4个Web服务器中的每个服务器上,这些服务器都安装了ruby脚本本身所在的全局(nfs)文件系统。也许这让红宝石很难知道在哪里可以找到宝石?我可以在脚本中设置一些环境变量来帮助吗?在早期的脚本中,我使用unshift解决了这个问题:
$:.unshift('/var/www/.rvm/gems/ruby-2.2.1/gems/addressable-2.3.8/lib/')
$:.unshift('/var/www/.rvm/gems/ruby-2.2.1/gems/css_parser-1.3.6/lib/')
$:.unshift('/var/www/.rvm/gems/ruby-2.2.1/gems/htmlentities-4.3.4/lib/')
$:.unshift('/var/www/.rvm/gems/ruby-2.2.1/gems/mini_portile-0.6.2/lib/')
$:.unshift('/var/www/.rvm/gems/ruby-2.2.1/gems/nokogiri-1.6.6.2/lib/')
$:.unshift('/var/www/.rvm/gems/ruby-2.2.1/gems/premailer-1.8.4/lib/')
$:.unshift('/var/www/.rvm/gems/ruby-2.2.1/gems/webrick-1.3.1/lib/')
require 'rubygems'
require 'test/unit'
require 'webrick'
require 'nokogiri'
require 'premailer'
感谢您提供有关最佳解决方式的任何信息,
SM