Capistranoデプロイ時にwheneverのタスクでinvalid byte sequenceのエラー
Capistranoでのデプロイ時に、デプロイフックでのタスク中で以下のようなエラーが出るようになりました。
DEBUG [67444af4] Command: cd /var/www/onebox/releases/20160426053048 && ( export RBENV_ROOT="/usr/local/rbenv" RBENV_VERSION="2.3.0" ; /usr/local/rbenv/bin/rbenv exec bundle exec whenever --update-crontab onebox_production --set environment=production --roles=web,app,db ) DEBUG [67444af4] /var/www/onebox/shared/bundle/ruby/2.3.0/gems/whenever-0.9.4/lib/whenever/numeric_seconds.rb:12:in `gsub': invalid byte sequence in US-ASCII (ArgumentError)
ふむふむ。どうやらエンコーディングの問題ぽい。とはすぐ思いつくものの試行錯誤しつつ解決せず...。
と悩んでたら以下の記事が解決してくれました。
AWS側で/etc/environment
を以下のように修正してロケール情報を変更します。
LANG=en_US.utf-8 LC_ALL=en_US.utf-8
LANG
とLC_ALL
という環境変数は以下を参考。
一般に、ロケール名は LANG 環境変数で指定します。ロケールカテゴリは LANG に従属しますが、個別に設定することも可能であり、そうした場合には、LANG よりそれらの設定が優先されます。LC_ALL 環境変数を設定すると、その設定が、LANG や個別のどのロケールカテゴリよりも優先されます。
Rubyのencodingは以下の2つの記事がとてもおもしろくて参考になりました。