録音したラジオでPodcastを作って聞く生活をしているのですが、思いつきで環境をいじったらハマってしまったのでメモ。経緯はこんな感じです。
cron直書きだったのでwheneverを使おう。→Rubyが1.9.3だったから2.1.1に上げよう。→rvmだったからrbenvに切り替えよう。→あれ、動かない。
芋づる式に余計なことしている感が出ていますね。
結果を先に書くと、rbenvの初期化を含んだjob_typeを追加しました。
oreore-radio/config/schedule.rb at master · yoshuki/oreore-radio
Contribute to yoshuki/oreore-radio development by creating an account on GitHub.
ということで、以下経緯です。
まず、wheneverでパスを通すために↓を追加ってのはよく見ます。
env :PATH, ENV['PATH']
これに倣ってパスは通せていたのですが、rbenvを使うにはこれだけでは足りず、rbenvのドキュメントに書かれている通り初期化が必要でした。
eval "$(rbenv init -)"
これを~/.bash_profileに足してはいたんですが、そもそもcronでは読んでくれないっていうのに気が付くまで時間がかかりました。
「job_type :rbenv_rake」の中が;区切りでダラッとなっているのが少し気になりますが、wheneverのrakeメソッドがデフォで含むRAILS_ENVを除くために「job_type :rake」の再定義をしていたので、先の「env :PATH」のところもひとつのメソッドにまとめられてスッキリした気持ちではいます。