読者です 読者をやめる 読者になる 読者になる

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)

ふむふむ。どうやらエンコーディングの問題ぽい。とはすぐ思いつくものの試行錯誤しつつ解決せず...。

と悩んでたら以下の記事が解決してくれました。

askubuntu.com

AWS側で/etc/environmentを以下のように修正してロケール情報を変更します。

LANG=en_US.utf-8
LC_ALL=en_US.utf-8

LANGLC_ALLという環境変数は以下を参考。

一般に、ロケール名は LANG 環境変数で指定します。ロケールカテゴリは LANG に従属しますが、個別に設定することも可能であり、そうした場合には、LANG よりそれらの設定が優先されます。LC_ALL 環境変数を設定すると、その設定が、LANG や個別のどのロケールカテゴリよりも優先されます。

ロケールとは - 国際化対応言語環境の利用ガイド

Rubyのencodingは以下の2つの記事がとてもおもしろくて参考になりました。

tmtms.hatenablog.com

blog.livedoor.jp