普通、CGIでエラーが発生した場合は[500 Internal Server Error]が表示され、どの部分がエラー発生箇所なのか確認することはできない。
自分もちょっと引っかかったのでググってみたら以下のエントリーを発見。
http://nobuson-ruby.at.webry.info/200504/article_10.html
記述されているソースが分かりづらかったので、ちょっと調べて書いてみる。
#!/usr/local/bin/ruby require 'cgi' #デバッグファンクション def error_cgi print "Content-Type: text/html\n\n" puts "*** CGI Error List ***" puts "<br /><br />" puts "#{CGI.escapeHTML($!.inspect)}" puts "<br /><br />" $@.each do |x| print CGI.escapeHTML(x) + "<br />" end end #CGIテスト def print_test print "Content-Type: text/html\n\n" putss "hello,world" end #main begin cgi = CGI.new #cgiの処理 print_test rescue error_cgi end
わかんなかった関数、メソッドを解説。
例外処理
beginとendの間に記述。
rescue
# 例外が発生したときの処理
else
# 例外が発生しなかったときに実行される処理
ensure
# 例外の発生有無に関わらず最後に必ず実行する処理
begin dest = open("backup/passwd", "w") source = open("/etc/passwd") rescue Dir::mkdir("backup") retry else dest.write(source.read) dest.close source.close ensure puts "script end." end