From: Shugo Maeda Date: 2009-10-28T11:09:34+09:00 Subject: [ruby-dev:39565] Re: [Bug #2291] Net::FTPでソケットをオープンする前にbinary=を呼び出すと落ちる 前田です。 2009年10月28日0:48 Yui NARUSE : >>(1) connect前にftp.binary = trueとしたことを覚えておいて、ftp.connect時にTYPEコマンドを >> 発行するようにする。 > > こちらだったら以下のような感じですかね。 よく考えたらlogin後でないとTYPEコマンドを発行できないですね。 また、現状では、Net::FTP#loginでbinary = trueにしているので、login前に 値を設定しても意味がありません。 このあたりは1.8と挙動が違うのですが、意図としてはデフォルトをbinary mode にしたいということです。 1.9でNet::FTP#binary=がTYPEコマンドを発行するようになったのは、 getbinaryfileなどの呼び出しのたびにTYPEコマンドが発行されるのを 避けるためです。 この影響で、binary=の設定がlogin後でないとできなくなったので、loginメソッド の中でself.binary = trueとするように修正されました。 # そもそも元のNet::FTP#binary=自体が自分が書いたコードじゃない気がするので # 経緯をはっきり覚えてないんですが。 (1)の方針で行くなら、FTPサーバ上のモードを表すインスタンス変数を行しく 導入する必要がある気がします。 とりあえず、r25518のbinary=の方の修正はいったんrevertしておきます。 -- Shugo Maeda