前田です。

At Sat, 18 Oct 2003 20:42:39 +0900,
堀川 久 <vzw00011 / nifty.ne.jp> wrote:
> ●標準出力への出力はすべてmessage-bodyとなる
> 
> CGIでは次のようにヘッダに続けてbodyを出力するように書きますが、
> mod_rubyではすべてmessage-bodyとして扱われます。
> 
> print "Content-Type: text/html\n\n"
> print "foo\n"
> 
> 上記のスクリプトは、mod_rubyでは、Content-Typeの行も表示されます。

Apache2ではそうなっていますね。

> FAQにはNPH-CGIのように動作すると書かれていますが、実際にはそのようには
> なっていませんよね?

Apache1ではNPH-CGI互換の動作になります。
Apache2でこのあたりの挙動が変わったようです。
# くわしくは調べていませんが。

> ●標準出力への出力は、$stdoutを使う
> 
> 標準出力オブジェクトを明示的に指定する場合は、STDOUTではなく、
> $stdoutを使わなければなりません。

これはまだ迷っています。

At Fri, 17 Oct 2003 14:48:04 +0900,
Shugo Maeda <shugo / ruby-lang.org> wrote:
> あ、Apache::RubyRunとApache::ERubyRunでは、ruby_wrapper(mod_ruby
> スクリプトのトップレベルのモジュール)にSTDOUTを定義するという手がありますね。
> そうすればもとのSTDOUTは::STDOUTで参照できるし。

と思ったんですが、これだとrequireされたライブラリからは再定義され
たSTDOUTが参照されないんですよね。
中途半端にサポートすると余計にはまりそうなので、いっそのこと
Apache::CGIRun(名前はともかく)みたいなCGI互換モード専用のモジュー
ルを用意して、ヘッダの処理も含めてサポートした方がいいのかもしれ
ませんね。

-- 
前田 修吾