我很难使用Apache和RVM设置Ruby CGI。我可以执行需要核心宝石的脚本,但我不能要求非核心宝石,而apache会产生错误。例如:
#!/usr/bin/env /home/user/.rvm/rubies/ruby-2.1.0/bin/ruby
require 'cgi'
print "Content-type: text/html\n\n"
print 'hello there'
#!/usr/bin/env /home/user/.rvm/rubies/ruby-2.1.0/bin/ruby
require 'cgi'
require 'nokogiri'
print "Content-type: text/html\n\n"
print 'hello there'
这两个脚本都可以从终端运行得很好,但apache会在第二个脚本上运行,从而出现此错误:
[Tue Mar 25 20:53:13 2014] [error] [client 127.0.0.1]脚本标题的提前结束:main_index.rb
/home/aaachilless/.rvm/rubies/ruby-2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in require': cannot load such file -- nokogiri (LoadError)from /home/aaachilless/.rvm/rubies/ruby-2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in
要求'来自/ home / aaachilless / Dropbox / aaachilless-me / cgi / main_index.rb:4:在`'
看起来像这个人How do I get a Ruby CGI program that requires a gem to run properly? 有同样的问题,但要求rubygems并不能解决它。
感谢任何帮助!
答案 0 :(得分:1)
我通过从RVM执行ruby包装器解决了同样的问题,因为我在shebang的CLI上使用的版本而不仅仅是/ usr / bin / ruby
#!/usr/local/rvm/wrappers/ruby-2.1.2/ruby
答案 1 :(得分:0)
rvm是按用户应用的,因此您的(系统?部署?root?)用户需要在启动时加载rvm,可能使用/etc/profile.d/rvm.sh
。
在the rvm docs中查看“多用户安装”以获取指导。