Windows でのファイル周りを Ruby 1.8 と比較。
File.size が 4GB 以上のファイルでも正常に動く
$ ruby19 -e "p File.size('big')" 11995281408 $ ruby18 -e "p File.size('big')" -889620480
1.8 では結果が狂っていたが、1.9 では正常な値を返す。
Dir.glob で UTF-8 のファイル名が取得できる
$ ruby19 -e "p Dir.glob('*'.encode('utf-8'))[0].encoding" #<Encoding:UTF-8>
Dir.glob のパターン文字列の encoding で返ってくるファイルパスの encoding が決まる。
この仕様はドキュメントに書かれていない。Dir.glob の結果がスクリプトエンコーディングに影響された事があり、それで気付いた。
Dir.entries, Dir.foreach でも UTF-8 のファイル名が取得できる
$ ruby19 -e "p Dir.entries('.', :encoding => 'utf-8')[0].encoding" #<Encoding:UTF-8>
こちらは :encoding 引数で指定する。
やはりドキュメントに書かれていない。[ruby-dev:35620] non-locale filename encoding のスレッドを読んでこのオプションを知った。
使っている Ruby のバージョン
$ ruby19 -v ruby 1.9.3p125 (2012-02-16 revision 34643) [i386-mingw32] $ ruby18 -v ruby 1.8.7 (2012-02-08 patchlevel 358) [i386-mingw32]