技術

Dockerでwheneverが動かない (bundler: failed to load command: bin/rails (bin/rails))

投稿日:2018年7月9日 更新日:

どうも中田です。
久々の投稿になります。

正確にはwheneverで登録したcronが動かないって話です。
発生したエラーはこんな感じ

bundler: failed to load command: bin/rails (bin/rails)

なんだか bin/rails が見えてないっぽい。


解決方法

schedule.rbに環境変数を渡す記述を入れる

rails_env = ENV['RAILS_ENV'] ||= 'production'
set :output, error: 'log/crontab_error.log', standard: 'log/crontab.log'
set :environment, rails_env
ENV.each { |k, v| env(k, v) } # これを追加

every 10.minute do
  runner 'Tasks::Test.execute'
end

Dockerでcronを実行する場合、環境変数が引き継がれないようなので、
cronの中に環境変数を書いてしまおうというもの

crontab -lで確認すると

# Begin Whenever generated tasks for: /test/config/schedule.rb at: 2018-07-07 00:28:14 +0000
RUBYGEMS_VERSION=2.7.7
BUNDLER_VERSION=1.16.2
RAILS_VERSION=5.2
...(省略)
BUNDLE_GEMFILE=/test/Gemfile
RUBYOPT=-rbundler/setup
RUBYLIB=/usr/local/lib/ruby/site_ruby/2.5.0
GEM_PATH=""
* * * * * /bin/bash -l -c 'cd /test && bundle exec bin/rails runner -e local '\''Tasks::Test.execute'\'' >> log/crontab.log 2>> log/crontab_error.log'
# End Whenever generated tasks for: /test/config/schedule.rb at: 2018-07-07 00:28:14 +0000

たしかにcrontabに入ってますね。
すると、うまく動きました。

-技術

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

[AWS S3] This XML file does not appear to have any style information associated with it. The document tree is shown below.

はじめまして。田中です。 AWSを触りはじめてから1ヶ月ちょっと。七転び八起きな …

no image

[Rails]updateの時だけvalidationを実行させる

こんにちは アプリを作っていて、create時にはvalidationを実行させ …

テストデータで「test.com」は使うのはNG!

こんにちは。たなかです。 開発しているサービスでユーザーのseedファイルを作成 …

[Angular] @NgModuleをざっくりと

どうも中田です。 最近社内でAngularの波が起こってるので そのビッグウェー …

no image

[JavaScript]IEのif文の判定がchromeと違う?

こんにちは、コーテッグのこやまです。 今持っている案件で、IE対応を進めているの …