[#38470] ruby-dev summary 21403-21530 (draft) — Minero Aoki <aamine@...>

青木です。

25 messages 2003/10/07
[#38475] Re: ruby-dev summary 21403-21530 (draft) — maili31s@... (SugHimsi==SUGIHARA Hiroshi) 2003/10/07

すぎむし。

[#38480] Re: ruby-dev summary 21403-21530 (draft) — Minero Aoki <aamine@...> 2003/10/08

青木です。

[#38481] marshal_dump (was Re: ) — m_seki@... 2003/10/08

[#38484] Re: marshal_dump (was Re: ) — matz@... (Yukihiro Matsumoto) 2003/10/09

まつもと ゆきひろです

[#38486] Re: marshal_dump (was Re: ) — Masatoshi Seki <m_seki@...> 2003/10/09

咳といいます

[#38489] exit status on exit! — YANAGAWA Kazuhisa <kjana@...4lab.to>

<http://www.unixuser.org/~ysjj/diary/?200310a&to=200310082#200310082>

29 messages 2003/10/09
[#38490] Re: exit status on exit! — Koji Arai <JCA02266@...> 2003/10/09

新井です。

[#38503] Re: exit status on exit! — YANAGAWA Kazuhisa <kjana@...4lab.to> 2003/10/10

In Message-Id: <20031010.082218.74733862.JCA02266@nifty.ne.jp>

[#38505] Re: exit status on exit! — Koji Arai <JCA02266@...> 2003/10/10

新井です。

[#38507] Re: exit status on exit! — matz@... (Yukihiro Matsumoto) 2003/10/11

まつもと ゆきひろです

[#38514] Re: exit status on exit! — YANAGAWA Kazuhisa <kjana@...4lab.to> 2003/10/11

In Message-Id: <1065883639.405037.23137.nullmailer@picachu.netlab.jp>

[#38515] Re: exit status on exit! — WATANABE Hirofumi <eban@...> 2003/10/11

わたなべです。

[ruby-list:38609] Re: mod_rubyでのSTDOUTについて

From: 堀川 久 <vzw00011@...>
Date: 2003-10-18 11:42:39 UTC
List: ruby-list #38609
こんにちは。

Yukihiro Matsumoto wrote on the <1066400910.062715.3606.nullmailer@picachu.netlab.jp>
>うーん、mod_rubyはそもそもCGI 100%互換じゃないですからねえ。
>完全互換にできない以上、mod_rubyでも動かしたいなら出力に気を
>つけろというのは許される範囲の制限だと私は思います。

そうですね。いきなり嵌りそうな点はこの辺でしょうか。

●標準出力への出力はすべてmessage-bodyとなる

CGIでは次のようにヘッダに続けてbodyを出力するように書きますが、
mod_rubyではすべてmessage-bodyとして扱われます。

print "Content-Type: text/html\n\n"
print "foo\n"

上記のスクリプトは、mod_rubyでは、Content-Typeの行も表示されます。

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

●標準出力への出力は、$stdoutを使う

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

●ヘッダの出力は、send_http_headerメソッドを使う

ヘッダを出力するには、次のようにheaders_outなどに値を指定して、
send_http_headerを呼び出します。

Apache.request.content_type = "text/html"
Apache.request.headers_out["foo"] = "bar"
Apache.request.send_http_header()

CGI#headerを使えば、CGIとmod_rubyの両方で動くように書けます。headerメ
ソッドは、CGIではヘッダ文字列を返しますが、mod_rubyではヘッダを出力し
ます。そのため、headerメソッドの戻り値を利用するようなスクリプトは修正
しなければなりません。

cgi = CGI.new
print cgi.header()  # mod_rubyでは標準出力には何も出力されない
print "foo\n"

-- 
HORIKAWA Hisashi (in Kanji: 堀川 久)
Netsphere Laboratories  http://www.nslabs.jp/

In This Thread