Ruby
middleman

middlemanをwerckerでデプロイしたらエラーが発生した件

More than 1 year has passed since last update.


事象

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