On Tue, 3 Aug 1999 12:52:43 +0900,
Minero Aoki  wrote:

> ないはずです。小さくすると送れるということは、たぶんサイズが
> 原因でしょう。想像するに、行末コードが\rとかになっているのでは?
> あるいは、\r\nの環境で\nの場合でも同様です。
> そうすると、eachループの一回目で一気に全部読み込まれて、3MBの
> 文字列にgsub!をかけることになるので、すさまじい負荷がかかります。

行末は \n ですが、送れないのはたかだか8KBくらいです。

> 望ましいと思います。sendmailなど、巨大な文字列を扱う可能性のある
> メソッドはどれも引数からeachを介して文字列を受けとることになって
> いるので、文字列やIOにラッパーをかぶせてやるのがいいです。

具体的にはどういうラッパーですか?
 
> それからついでに書いておくと、POPMail#popなど巨大な文字列を受け取る
> 可能性のあるメソッドは省略可能な引数として「読み込み先オブジェクト」
> を渡せます。読みこまれた文字列は << メソッドによってこのオブジェクト
> に渡されるので、たとえば
> 
>     File.open( '/tmp/save', 'w' ){|f| popmail.pop( f ) }
> 
> で直接ファイルに書き込めます。

なるほど、これは便利かも。

> > ところで、こういうログを取るときの仕様は決まったんでしたっけ?
> 
> session.rbにあるNet::DEBUGといういかにもあやしげな定数にtrueを
> いれておくと$stderrにコマンドが表示されます。アプリケーション側から
> それをうける仕組はまだありません。
> 
> これを利用して $stderr -> @stderr とするのでどうでしょう。

いいですね。

-- 
人生を背負い投げ

菊谷 誠(Kikutani Makoto)  kikutani / sprintmail.com