ruby-aaws 0.8.1 で invalid byte sequence in utf-8 が出た場合
Ruby で Amazon Web Service(AWS) を使用するためのライブラリに、ruby-aaws というものがあります。
このライブラリを Ruby1.9 で使用した場合、cache がある場合に invalid byte sequence in utf-8 とエラーを吐いて止まります。
これの対処方法を書いておきます。
# amazon/aws/cache.rb Line.101 File.open( File.join( cache_file ) ).readlines.to_s
# 変更後 File.read( cache_file )
これは Ruby1.9 から Array#to_s の仕様が変わったためです。
irb(main):002:0> RUBY_VERSION => "1.9.2" irb(main):003:0> [1,2,3].to_s => "[1, 2, 3]" irb(main):002:0> RUBY_VERSION => "1.8.7" irb(main):003:0> [1,2,3].to_s => "123"
そもそも to_s や inspect は人間が分かりやすい文字列にするためのもので、その結果を処理に利用するのはやめるべきです。