Ruby2.0にアップデートしたら、Sass/Compassでエラーが出るように

Ruby2.0にアップデートしたところ、CompassでSassのコンパイルを行う時に下記のエラーが出てしまうようになりました。

bashinvalid byte sequence in Windows-31J Run with --trace to see the full backtrace

参考

こちらのページが参考になりました。どうやら、Windows環境でRuby製のツールを使う時にエンコーディングが問題となるようです。

対応方法

```ruby Encoding.default_external = 'UTF-8' ```

config.rbの一番上に、この1行を追加したところ、"invalid byte sequence in Windows-31J" エラーは出なくなりました。

エラーの起きていた箇所

スプライト画像をCompassを使って作成しています。このスプライト画像が、デフォルトでは"sprite-s8fcadae08d.png"のように、自動でハッシュ文字列(s8fcadae08d の部分)が加えられてしまうのを、config.rbに下記のコードを追加することで、作成したスプライト画像とCSSからハッシュ文字列を削除するようにしていました。

この部分を削除すると、エンコーディングをUTF-8に指定せずともエラーは出ません。

下記コードは css - How to remove the hash from Compass's generated sprite image filenames? - Stack Overflow で紹介されているものそのままです。

```ruby

Make a copy of sprites with a name that has no uniqueness of the hash.

on_sprite_saved do |filename| if File.exists?(filename) FileUtils.cp filename, filename.gsub(%r{-s[a-z0-9]{10}.png$}, ‘.png’) end end

Replace in stylesheets generated references to sprites

by their counterparts without the hash uniqueness.

on_stylesheet_saved do |filename| if File.exists?(filename) css = File.read filename File.open(filename, ‘w+’) do |f| f « css.gsub(%r{-s[a-z0-9]{10}.png}, ‘.png’) end end end