事象
wercker上でbundle exec middleman build --verbose
を実行すると、以下のエラーが発生した。
/pipeline/cache/bundle-install/ruby/2.2.0/gems/middleman-core-4.1.9/lib/middleman-core/util/data.rb:60:in `match': invalid byte sequence in US-ASCII (ArgumentError)
利用しているbox: ruby:2.2.2
利用しているmiddlemanのバージョン: 4.1.9
解決方法
wercker上で、RUBYOPT=-EUTF-8
という環境変数を設定する。
wercker.ymlでコマンドで追加する方法と、werckerのGUI上で追加する方法がある。
# wercker.ymlで追加する方法
- script:
name: set env
code: export RUBYOPT=-EUTF-8
GUIでは、「setting」の「Environment variables」に環境変数を追加することができる。
原因
rubyのエンコードがUS-ASCIIになっていたのが原因かもしれない。
$ /Users/hikaru/.rbenv/shims/ruby -e 'puts Encoding.default_external' # 手元の環境
UTF-8
$ /usr/local/bin/ruby -e 'puts Encoding.default_external' # CIツール
US-ASCII
参考
参考にさせていただきました。
http://qiita.com/kijibato/items/5e6543fd6e681f916bb0