In article <874rgqdt3x.wl / studly.priv.netlab.jp>,
  Shugo Maeda <shugo / ruby-lang.org> writes:

> > * StringIO と Tempfile を切替えるのにサイズを測る必要があるとか、
> >   (まぁ、これは StringIO 側だけあればいいんですが。)
> 
> こっちはよくわからないのですが、

データが小さいうちは StringIO に貯めておいて、ある程度大きくなったら
Tempfile に切替えるという話です。

> > * (HTTP server で)出力を StringIO/Tempfile に貯めた後、Content-Length:
> >   の値を求めたいとか、
> 
> 実は本当に欲しい機能にふさわしい名前はIO#bytes_readとか
> IO#bytes_writtenとかじゃないです?

ふむ。それは read や write の累積サイズを返すようなものでしょうか?

もし、そうだとすれば、StringIO/Tempfile で seek したり、子プロセスから
書いたりしない限りにおいて同じような機能を実現できそうですね。

ただ、「本当に欲しい」のは、むろん、Content-Length: に書くべき値なわけ
で、これは StringIO/Tempfile に貯めてあるものを socket にそのまま垂れ
流すようなコードが HTTP server にあるという状況では、IO#size (ないしは
File#size) のほうが必要なものだと思います。
-- 
[田中 哲][たなか あきら][Tanaka Akira]
「ふえろ! わかめちゃん作戦です$(C⊇」(Little Worker, 桂遊生丸)