0
我的環境:紅寶石1.9.3p392(2013年2月22日修訂39386)x86_64的Linux的]紅寶石CGI不會返回方法調用,但將返回參數
的事情是,我可以使紅寶石返回的參數通過GET發送。但是當我試圖在if/else中使用它們作爲我的方法的爭論時,ruby不會返回任何內容,並且最終會出現空白頁。
pH值和下午返回正確:
http://127.0.0.1/cgi-bin/test.rb?hostname=node00.abit.dk&macadd=23:14:41:51:63
回報:
node00.abit.dk 23:14:41:51:63
連接到數據庫(MySQL的)工作正常
當我測試的方法newHostName它正確輸出:
puts newHostName
回報率(這是正確的)
node25.abit.dk
代碼:
#!/usr/bin/ruby
require 'cgi'
require 'sequel'
require 'socket'
require 'timeout'
DB = Sequel.connect(:adapter=>'mysql', :host=>'localhost', :database=>'nodes', :user=>'nodeuser', :password=>'...')
#cgi-part to work
#takes 2 parameters:
#hostname & macadd
cgi = CGI.new
puts cgi.header
p = cgi.params
ph = p['hostname']
pm = p['macadd']
def nodeLookup(hostnameargv)
hostname = DB[:basenode]
h = hostname[:hostname => hostnameargv]
h1 = h[:hostname]
h2 = h[:macadd]
ary = [h1, h2]
return ary
end
def lastHostName()
#TODO: replace with correct sequel-code and NOT raw SQL
DB.fetch("SELECT hostname FROM basenode ORDER BY id DESC LIMIT 1") do |row|
return row[:hostname]
end
end
def newHostName()
org = lastHostName
#Need this 'hack' to make ruby grep for the number
#nodename e.g 'node01.abit.dk'
var1 = org[4]
var2 = org[5]
var3 = var1 + var2
sum = var3.to_i + 1
#puts sum
sum = "node" + sum.to_s + ".abit.dk"
return sum
end
def insertNewNode(newhost, newmac)
newnode = DB[:basenode]
newnode.insert(:hostname => newhost, :macadd => newmac)
return "#{newnode.count}"
end
#puts ph
#puts pm
#puts newHostName
cgi.out() do
cgi.html do
begin
if ph == "node00.abit.dk"
puts newHostName
else
puts nodeLookup(ph)
end
end
end
end
我覺得我在這裏失去了一些東西。很感謝任何形式的幫助!
// M00kaw
謝謝你幫我出:> 我要解決的2位的事.. 從的if/else沒刪除「看跌期權」沒有幫助。它仍然不會輸出任何東西:/ – M00kaw
看看你的cgi服務器的日誌文件。您可能會在此找到有用的東西。或者,您可以嘗試在調試時不依賴數據庫,只需從'cgi.out()'返回一些硬編碼的字符串來查看是否有效。數據庫連接可能有問題。 –