WHITELEAF:Kindle応援サイト

KindleでWEB小説を読もう! Narou.rb 公開中

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 は人間が分かりやすい文字列にするためのもので、その結果を処理に利用するのはやめるべきです。