当我需要任何gem时,我的Ruby CGI脚本不起作用。我想在我的应用程序中使用“peach”gem,它是由“gem install peach”安装的,但是我以root身份安装它。我的测试应用程序,名为“gemtest”:
<% @reviews.each do | review | %>
<%= review.title %>
<%= review.content %>
<% end %>
它总是在apache错误日志中出现错误:
#!/usr/bin/ruby
require "cgi"
require "peach"
cgi=CGI.new(:accept_charset => "UTF-8")
puts "Content type: text/plain; charset: 'UTF-8'"
puts
puts "It Works!"
我还尝试在Apache的httpd.conf文件中使用指令“SetEnv”设置LOAD_PATH和GEM_PATH环境变量,并且我总是重新启动Apache守护程序:
/usr/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
cannot load such file -- peach
(
LoadError
)
\tfrom /usr/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
\tfrom /opt/lampp/cgi-bin/gemtest:6:in `<main>'
End of script output before headers: gemtest
但我没有成功。如何在运行简单的CGI应用程序时正确地要求任何gem?
答案 0 :(得分:1)
问题是,尝试加载gem的用户很可能无法访问为您的用户名安装的gem
检查在apache配置中加载apache服务的用户名,很可能是nobody用户,并为该用户安装gem
function RemoveDirectory($direct)
{
foreach(glob("{$direct}/*") as $file)
{
if(is_dir($file)) {
RemoveDirectory($file);
} else {
unlink($file);
}
}
rmdir($direct);
}
如果您不想为不同的用户处理不同的宝石,您可以随时使用捆绑器