前田です。

At Sat, 20 Nov 1999 13:48:43 +0900,
Yamada Kenji <kyamada / hitachi-densa.co.jp> wrote:
> ruby で以下のような cgi スクリプトを書いて
> cgi として実行するとブラウザに 
> Hello World! と表示されるのですが,
> 
> =
> print "Content-type: text/html\n\n"
> print "<html><body>Hello World!</body></html>
> =
> 
> mod_ruby 経由で実行すると
> 
> Content-type: text/htmlHello World!
> 
> のように HTTP ヘッダもブラウザ上に表示されてしまいます.

mod_rubyはNPHモードのCGI互換のインタフェイスを提供します。
NPHモードのCGIでは、

print "HTTP/1.0 200 OK\r\n"
print "Content-Type: text/html\r\n\r\n"
print "<html><body>Hello World!</body></html>"

のようにステータスラインをつける必要があります。

> mod_ruby を組み込んでいるものといないサーバとで同じ
> スクリプトが使える方が便利なのですが,何かよい
> 方法はありますか?

cgi-lib.rbやcgi.rbを使うのがおすすめです。

require "cgi"

cgi = CGI.new
print cgi.header("type" => "text/html")
print "<html><body>Hello World!</body></html>"

こうするとNPHモードとそうでないモードの違いをライブラリが吸収して
くれます:-)

-- 
前田 修吾