前田です。

2009年10月28日0:48 Yui NARUSE <redmine / ruby-lang.org>:
>>(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