rvmのcronでLANGが設定されていない場合の対応
ruby2.0でcronの場合のみ、こんなエラーが出ました。
`strip': invalid byte sequence in US-ASCII (ArgumentError)
該当のコードはこれ。
utf-8のtextを読み込んでstripさせているだけ。
File.open('whitelist.txt').readlines.map(&:strip).any? do |keyword| words.join.include?(keyword) end
対応方法
+++ 上野メモ帳 +++ cronだとLANGとかLC_CTYPEが反映されない
こちらを参考にlocaleをcronで確認してみると。
LANG= LC_CTYPE="POSIX" LC_NUMERIC="POSIX" LC_TIME="POSIX" LC_COLLATE="POSIX" LC_MONETARY="POSIX" LC_MESSAGES="POSIX" LC_PAPER="POSIX" LC_NAME="POSIX" LC_ADDRESS="POSIX" LC_TELEPHONE="POSIX" LC_MEASUREMENT="POSIX" LC_IDENTIFICATION="POSIX" LC_ALL=
なるほど、LANGが設定されていません。 LANGの設定だけでも動きますが、正規表現用にLC_TYPEもcrontabに設定して解決。
LC_CTYPE=ja_JP.utf8 LANG=ja_JP.utf8