技術

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 を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

画像生成マシーン「MakeGirlsMoe」の10連結果

女の子の萌え画像を作ってくれる「MakeGirlsMoe」なるものが作られたよう …

no image

【ionic】タブをタップで最上部にスクロール!

どうも、中田です。 今日はタブをタップでトップにゴーの日です。 どういう日かとい …

no image

[Rails]if文とcontent_for

こんばんは content_for便利ですよね。 今回はcontent_forと …

fullpage.jsでコンテンツを画面幅いっぱいでスクロールさせる。

fullpage.jsとは fullpage.jsは一つのコンテンツを画面いっぱ …

【Alexa Skill】ビックリするなかれ (Unsupported Directive)

どうも中田です。 みなさんAlexa使ってます?Alexaスキル作ってます? 今 …