invalid byte sequence in US-ASCII
お仕事でRSpecでE2Eテストを書いているのだが、Windows上で動かすとエラーメッセージが文字化けしていたりして、書きやすい環境とはちょっと言い難い。Jenkinsからテスト実行用のDocker コンテナを起動してテストしているので、テストを書くときも使うことにした。
で、テストを書いて動かしてみたら、なんだかエラーがでている。出ているのだが、invalid byte sequence in US-ASCII となっているので、元々出したいメッセージが出ていない状況になっている。
原因は文字コード
ググってみて、* Ruby - cronで「invalid byte sequence in US-ASCII」例外発生! - mk-mode BLOGを見つけた。状況とあわせて考えると、localeが日本語になっていないのが原因のようだ。確かに、LANGもLC_CTYPEも設定していない。
Ruby imageのlocaleを設定する
OFFICIAL REPOSITORY Ruby/を使うようにDockerfileを書き換えていたので、Debianでのロケールの変更方法をググった。
Debian/Ubuntuのデフォルトロケールを変更する - Qiitaが見つかったので、それに従ってDockerfileを直してみた。以下抜粋
これで動かしたところ、invalid byte sequence in US-ASCII と言われずに、日本語を含むエラーメッセージが表示された。やれやれ。