[#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:38602] Re: mod_rubyでのSTDOUTについて

From: Shugo Maeda <shugo@...>
Date: 2003-10-17 04:47:48 UTC
List: ruby-list #38602
前田です。

At Thu, 16 Oct 2003 23:07:12 +0900,
堀川 久 <vzw00011@nifty.ne.jp> wrote:
> 次のスクリプトは画面にfooと表示されます。
> 
>   require "cgi"
>   cgi = CGI.new
>   print cgi.header() 
>   $stdout.print "foo\n"
> 
> 一方、次のスクリプトは画面に何も表示されません。
> 
>   require "cgi"
>   cgi = CGI.new
>   print cgi.header() 
>   STDOUT.print "foo\n"
> 
> $stdoutとSTDOUTは、実用上は同じかと思っていたのですが、内部では違うの
> でしょうか。

まず、STDOUTは標準出力を表すIOオブジェクトです。
一方、$stdoutはスクリプトのデフォルトの出力先で、そのデフォルト値
はSTDOUTになっています。
ですから、$stdoutを書き換えなければ「実用上は同じ」ですね。
$stdoutはIOであることは要求されないので、mod_rubyでは(スクリプト
が呼び出されるたびに)$stdoutをApache::Reuqestオブジェクトにするよ
うにしています。

STDOUTの方は定数なので、一般的には「標準出力を表すIOオブジェクト」
という意味を変えるべきではないと思います。
問題はmod_rubyという特殊なケースでどうするべきかですが、$stdoutと
STDOUTが分かれているのは、まさにmod_rubyのようなケースを想定して
そうなっているような気がするので、現状でいいんじゃないかなあ…。
実際問題としては、もともとのSTDOUTにアクセスできてもforkする時く
らいしか意味はないかもしれませんが。
あと、STDOUTを書き換えるのは簡単ではあるのですが、いったんSTDOUT
を削除してからもう一度定義することになるので、何となく抵抗があります。

というわけで、もう少し他の方の意見もお聞きしたいところです。

-- 
前田 修吾

In This Thread