3.1.0.20110906 で入れたコードの中に
if String.method_defined?(:encode) Encoding::Converter.new('UTF-16', 'UTF-8') end
というのがあって、これは 1.9.3 以降では問題無いけど、1.9.2 以前ではエラーとなるのであった。何が問題かわかる人は挙手。
答えは UTF-16 という encoding は存在しなくて、UTF-16BEかUTF-16LEを指定しなければならない。1.9.3以降ではBOMを見てそれを自動判別してくれる(んだっけ? n0kadaの話をぐだっと聞いていたらこんな感じだった)のでそれを指定しなくてもエラーにはならないそうだ。でも、これを省略する男の人って…ということなので、ちゃんと指定しましょう。
そんなわけで、tDiary-3.1.0.20110907では上記の UTF-16 を UTF-16BE と明記するのと、またまた Secure モード対策の一つとしてObject.untrust を骨抜きにする workaround の二つが導入されている。後者の方はこれでいいんだっけ?