cronでrakeが動かない問題

「man 5 crontab」とやれば書いてあるけど、Ubuntu(たぶんDebianも)のcronで、rakeが上手く動かないように見えた問題は、環境変数絡みだった。cronはSHELL、LOGNAME、HOME、PATH、NAMEなどの最低限の環境変数を独自に設定して/bin/shを呼ぶ。cronのPATHには「/user/bin:/bin」しか含まれない。なので、crontabの先頭に自分で環境変数を書き足すのが手っ取り早い。

# m h  dom mon dow   command
PATH=/home/yarb/.......:/home/.....
GEM_PATH=/home/yarb/.....

15 02,10,18 * * * cd $HOME/path_to_app/; rake RAILS_ENV=production item:update >> ./log/cron.log 2>&1

という感じ。