まつもと ゆきひろです
In message "[ruby-list:5849] Re: CGI script in Ruby"
on 98/01/10, GOTO Kentaro <gotoken / math.sci.hokudai.ac.jp> writes:
|ごとけんです
| > $stderr = STDOUT
| >
| > のように代入すると
| >
| > $stderr.reopen(STDOUT)
| >
| > と同じ動作をすることです.
|
|そういう風に変更されたのですね。知らなかったです (^^;
以前は単なるread-only global variableでしたからね.reopenが
できた時に変更しました.
|ruby にもし tee(1) みたいなのがあって、出力先を複製できるなら、
|いいのですが、そういうことはできないようなので
|人が出してくれたエラーも記録するために stderr と stdout は
|分けて使っています。
print,printfのデフォルト出力先変数$>に関してはwriteメソッドを
理解するオブジェクトならなんでも良いようになっています.
class TeeIO
def initialize(io, log)
@io = io
@log = open(log, "w")
end
for method in ['write', 'print', 'printf', 'close']
eval "def #{method}(*args); @io.#{method}(*args);@log.#{method}(*args);end"
end
end
なんてクラスをつくっておけばtee(1)の代わりになるんではないで
しょうか?
$stdin,$stdout,$stderrについてはちょっと無理そうです.という
のもリンクしたライブラリなどrubyの変数を参照しないものをリダ
イレクトするためにreopenが必要そうだからです.
|tty からテストする理由は syntax エラーを拾うためです。
|
|% setenv QUERY_STRING 'a=1&b="hehe"'
|% setenv REQUEST_METHOD GET
|% hoge.cgi
|
|みたいにしてます。これは ruby 1.1 ではしなくてもよいこと
|なのでしょうか? (実はいまだに 1.0)
1.1についている青山さん拡張のcgi-lib.rbは環境変数
REQUEST_METHODが定義されていないと標準入力からQUERY_STRING
相当を入力できます.
まつもと ゆきひろ /:|)