0

Ruby on rails + Capistrano + Whenever gem

実行whenever --update-crontabしましたが、本番サーバーで cron ジョブが実行されません。ログ ファイルにログがありません。ただし、必要のない開発ではすべてがうまく機能しますcapistrano

スケジュール.rb

set :output, "../dev/log/cron.log"

every 1.minute do
  runner "SOME_TASK"
end

deploy.rb

set :whenever_identifier, ->{ "#{fetch(:application)}_#{fetch(:stage)}" }

キャップファイル

 require "whenever/capistrano"

問題は何ですか?デバッグする方法は?

4

1 に答える 1

0

アプリをデプロイするときに、同様の問題が発生しました。

crontab のログ ファイルを確認すると、crontab は実行されますが、間違ったコンテキストで実行されていることがわかります。

例えば:

このコードは実行されるはずですが、実行されません。

every 1.minute do runner "bundle exec rake db:seed" end

代わりに、実行可能ファイルへの絶対パスを指定する必要があります。Cron は、どのようなコンテキストで実行する必要があるかを認識せず、実行するだけです。

デプロイメントでは rbenv を使用し、gem のシムを使用します。そのため、実行可能ファイルへの絶対パスを cron に指定しました。

このコードは実行されます: every 1.minute do runner "/usr/bin/shims/bundle exec rake db:seed" end

于 2014-12-04T14:41:43.610 に答える