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), "
"}
endbegin
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.newprint "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), "
"}
endend
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(大文字)の方が詳しく出るね。内容は同じだけど。
まぁ、大文字の場合、いろいろ出ちゃって逆にセキュリティ上よくないけど。
アップするときには全部かえる必要ありですね。