RVM无法找到宝石

时间:2016-07-28 18:28:38

标签: rubygems environment-variables rvm

我看了下面的内容: How do RVM rubies find gems?

并认为那里的建议可能会有所帮助,例如

要求' ruby​​gems'

$ echo $ GEM_HOME

但可以使用一些关于如何申请的建议 - 我的ruby文件确实有

要求' ruby​​gems'

在要求其他宝石(无法找到)之前指定的

指令...我在错误日志中收到这样的错误:

    /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

0 个答案:

没有答案