継続的ブログ

主にweb系の技術について書いています

DockerでWhenever(gem)が動かなくてハマった話

久々の更新です。
最低でも月1で書きたいなあと思ってたのですが、2ヶ月以上も空いてしまいました。
最近はRailsはもちろんのこと、React NativeやDockerもバリバリ使ってます!

さて、標題の件ですが、いやー、かなりハマりました。

現在、開発環境にDocker(Docker Compose)を使って、Railsアプリを開発しています。
そして、crontab管理にwheneverというgemを使っています。

コンテナでcronを動かしたいなと思ったのですが、なかなかうまくいかない。。。
cronをインストールして、起動して、wheneverのコマンドでcrontabの設定も完了したのですが、実行時間になるとwheneverのログにエラーが。

Could not find rake-10.5.0 in any of the sources (Bundler::GemNotFound)

crontabに設定されているコマンドをdocker-compose run等で実行すると正常に実行される。

いろいろ調べて下記サイトに辿り付きました。

support.aptible.com

qiita.com

環境変数を渡してあげなきゃいけないみたいです。

一番目のリンクの通り、config/schedule.rbにENV.each { |k, v| env(k, v) }を追記したらうまくいきました。