7

Rails 3.2 アプリで gem 'clockwork' を使用しています。アプリは Heroku で実行されています。クロック ジョブは午前 1 時に実行されますが、コードは実行されません。

これが clock.rb コードです。

  Clockwork.every(1.day, 'DailyJob', :at => '01:00'){
    StatsMailer.stats_email.deliver
    Forecast.where(:run_date => Date.today).each  do |forecast|
      woschedules_run_jobplans_path(:id => forecast.woschedule_id)
    end
  }

ログには次のように表示されます。

Sep 04 00:00:05 ndeavor-staging app/clock.1: #<NoMethodError: Clockwork:Module の未定義メソッド `woschedules_run_jobplans_path'>

ルートをかき集めると、次のようになります。

woschedules_run_jobplans GET   /woschedules/run_jobplans(.:format) woschedules#run_jobplans
4

1 に答える 1

7

エラーは、ルートが存在しないことです。ルートは存在するため、この問題は通常、Rails ルートが現在のスコープにロードされていないことを意味します。

適切に機能させるために、Rails のルート ヘルパーを含める必要がある場合があります。Rails.application.routes.url_helpers

Clockwork.every(1.day, 'DailyJob', :at => '01:00'){
  StatsMailer.stats_email.deliver
  Forecast.where(:run_date => Date.today).each  do |forecast|
    # Prepend your route with the following:
    Rails.application.routes.url_helpers.woschedules_run_jobplans_path(:id => forecast.woschedule_id)
  end
}

または、少し乾燥させるために、次を使用して、ファイルの先頭にすべてのルート ヘルパーを単純に含めることができます。

# Beginning of file
include Rails.application.routes.url_helpers

# ...
于 2015-09-16T16:32:07.967 に答える