前田です。

2009年10月27日23:55 Shugo Maeda <redmine / ruby-lang.org>:
> この修正で問題ないとしたら、ちょっとAPIが変だと思うので、もうちょっと考えさせてください。

やっぱりこの修正だと、ftp.connect前にftp.binary = trueとすると、その後にloginやgetbinaryfile
などでbinary modeにセットしようとしてもTYPEコマンドが発行されなくなってしまうようです。
# Net::FTP#binary=は、新しいモードが現在と同じだとTYPEコマンドを発行しないため。

(1) connect前にftp.binary = trueとしたことを覚えておいて、ftp.connect時にTYPEコマンドを
    発行するようにする。
(2) connect前にftp.binary=実行した場合は、潔く(?)例外を挙げる。

といった対応が考えられますが、特にconnect前にNet::FTP#binary=を使いたい理由があるでしょうか。
なければ(2)の方がシンプルなので、(2)にしたいのですが。

-- 
Shugo Maeda