我有以下脚本(ruby 1.9.3),如果我注释掉两个Thread行它工作正常,如果我留下它我在我的web服务器上得到500内部错误。为什么这在CGI中不起作用,但在命令行上工作正常?
#!/usr/bin/ruby
require 'rubygems'
require 'cgi'
print "Content-type: text/html\n\n"
TIMEOUT = 8
def worker(data, results)
results[data] = rand(6)
end
if __FILE__ == $PROGRAM_NAME
results = {}
worker("abc", results)
t = Thread.new{ worker("xyz", results) }
t.join(TIMEOUT)
print results
print "done"
end
答案 0 :(得分:0)
我首先从您的网络服务器查看错误日志,希望看到导致501的原因。我在我的服务器上尝试了这个并且它按预期工作。
也许网络服务器正在启动不同的红宝石或无法找到宝石。
如果您在错误日志中看不到它,您可以尝试使用rescue来捕获错误,即:
begin
t = Thread.new{ worker("xyz", results) }
t.join(TIMEOUT)
rescue => e
puts e.inspect
end