2013-10-11 87 views
1

我有以下腳本(紅寶石1.9.3),如果我註釋掉兩個螺紋線,它工作正常,如果我留下他們在我得到一個500內部錯誤網絡服務器。爲什麼這在CGI中不起作用,但在命令行上工作正常?我如何讓線程工作在紅寶石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

我就開始從看到的希望你的服務器在看錯誤日誌是什麼原因造成的501我想這是我的服務器上,它的工作如預期。

也許網絡服務器啓動了不同的ruby或找不到寶石。

如果你不能看到它的錯誤日誌,你可以嘗試趕上救援的錯誤,即:

begin 
    t = Thread.new{ worker("xyz", results) } 
    t.join(TIMEOUT) 
rescue => e 
    puts e.inspect 
end