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