現象
wheneverでcrontab登録して、rubyスクリプトを走らせようとしたら
bash: ruby: command not found
というログを大量に残して死んでいたので原因究明した。普通に動いてたのに、Ubuntu自体をアップグレードしたら死んだので謎だった。
環境
だいたいこんな感じ。
原因
.zshrc
にはrubyのパス設定が書いてあって、zsh上では動かしたいスクリプトが正常に動作してたのでハマった。
bash側でパスが通ってないのが問題だった。ログインシェルをzshにしてるから、crontabでもzshのパスを使ってくれているかと思ったらそんなことは全然なかったぜ!ちゃんとbash側でも読める設定ファイルに書いてあげないといけない。原因が分かると「そりゃそうだわな。」といった問題でした。
対策
bash側にもパス通せばいいだけなので.bash_profile
とか.bashrc
に
export PATH=$HOME/.rbenv/bin:$PATH
を追加してあげれば動いた。これ、今後もハマりそうだから、下記リンク先とか読んで、適切に設定したほうが良さそう。