T

rbenvでcron

しょっちゅう忘れるのでメモ。rbenvの環境でRubyをcronから実行すると、細かい実行環境の違いで失敗する。なので、こんな工夫が必要になる。

42 4 * * * /bin/bash -c 'export LANG=ja_JP.UTF-8;export PATH="$HOME/.rbenv/bin:$PATH";\
 eval "$(rbenv init -)";ここから実際にやりたいことを書く'

* 実際には一行で。

まず-cでbashを続く文字列から読み込んで実行するモードにする。LANGの設定をここかcrontabの先頭で指定しておかないとRubyのスクリプトの先頭に「# -*- coding: UTF-8 -*-」と書いていても非ASCII文字がどうたらというエラーになる。PATHも同じで、インラインで書くなら上みたいな感じにする。あとはおまじないだと思いましょう。

Posted by on 9月 11, 2012 in Linux, Ruby

コメントを残す