CGIでデバッグの便利コード

ここを参照。
http://d.hatena.ne.jp/n246/20070405/1175785883

で、作ったソース。

                                      • -

#!/usr/bin/ruby -Ku
require "cgi"

def error_cgi
print "Content-Type:text/html;charset=UTF-8\n\n"
print "*** CGI Error List ***
"
print "#{CGI.escapeHTML($!.inspect)}
"
$@.each {|x| print CGI.escapeHTML(x), "
"}
end

begin
cgi = CGI.new
print "Content-type: text/html\n\n"
textFile = open("../txt/3_6_1.txt","w")

textFile.puts cgi['textArea1']

header = ""
footer = ""
print header + "ok" + footer + "\n"

rescue
error_cgi
end

ruby de CGIの教科書に載ってたhtmlフォームのボタンを押したらテキストボックスに書いた文字がテキストファイルに書き出される。

便利なので、クラス化決定。
で、こうなった。

・メインのコード

#!/usr/bin/ruby -Ku
require "cgi"
require "showCgiError"

begin
#cgiインスタンス
cgi = CGI.new
#cgiエラー出力をインスタンス
showCgiError = ShowCgiError.new

print "Content-type: text/html\n\n"
#受け取ったパラメータをテキストファイルに書き込む
textFile = open("../txt/3_6_1.txt","w")
textFile.puts cgi['textArea1']

#HTMLファイル
header = ""
footer = ""
print header + "ok" + footer + "\n"

rescue
showCgiError.cgiErrorShower(CGI)
end

・エラー出力クラス

class ShowCgiError

def cgiErrorShower(cgiError)

print "Content-Type:text/html;charset=UTF-8\n\n"
print "*** CGI Error List ***
"
print "#{CGI.escapeHTML($!.inspect)}
"
$@.each {|x| print cgiError.escapeHTML(x), "
"}

end

end

CGIまんまパラメータで渡しちゃってるけど、いいのかな?

追記
なんかきもちわるかったので、確認してみた。
cgi(小文字)
 表示文字列:Content-Type:text/html;charset=UTF-8 *** CGI Error List ***
       #

CGI(大文字)
 表示文字列:Content-Type:text/html;charset=UTF-8 *** CGI Error List ***
#
/Users/****/Sites/testRubyCgi/src/rubyTest.cgi.rb:15

CGI(大文字)の方が詳しく出るね。内容は同じだけど。
まぁ、大文字の場合、いろいろ出ちゃって逆にセキュリティ上よくないけど。
アップするときには全部かえる必要ありですね。