ごとけんです In message [ruby-list:5839] Re: CGI script in Ruby <199801090307.MAA32165 / picachu.netlab.co.jp> > 違いは$stdin,$stdout,$stderrは特殊変数で,これに > > $stderr = STDOUT > > のように代入すると > > $stderr.reopen(STDOUT) > > と同じ動作をすることです. そういう風に変更されたのですね。知らなかったです (^^; ちなみに僕は、申し訳ないことに青山さん拡張の cgi-lib.rb を 使ってませんので、以下の話しは最初の質問には関係ないですが こういうことをやってるやつもいるという程度に読んで下さい。 CGI をかくときは、 #! /usr/local/bin/ruby error_file = open("hoge_error_log", "a") $stderr.reopen(error_file) unless $stdin.tty? def end_html print "</html>\n" $complete = TRUE end begin .. end_html .. ensure unless $complete $stderr.print "異常終了\n" $stdout.print "<br>予期せぬエラーのため送信を中断しました!!!</html>\n"> end error_file.close if error_file end などととしてまして、 httpd を通したときのエラーはファイル hoge_error_log に、 tty からテストするときは tty に書くようにしてます。 ruby にもし tee(1) みたいなのがあって、出力先を複製できるなら、 いいのですが、そういうことはできないようなので 人が出してくれたエラーも記録するために stderr と stdout は 分けて使っています。 tty からテストする理由は syntax エラーを拾うためです。 % setenv QUERY_STRING 'a=1&b="hehe"' % setenv REQUEST_METHOD GET % hoge.cgi みたいにしてます。これは ruby 1.1 ではしなくてもよいこと なのでしょうか? (実はいまだに 1.0) -- gotoken