2015-09-04 11 views
8

Uso il gioiello 'orologio' in un'applicazione Rails 3.2. L'app è in esecuzione su Heroku. Il lavoro di clock viene eseguito alle 1:00, ma non sta eseguendo il codice.Movimento a orologeria delle rotaie non in esecuzione codice

ecco il codice 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 
    } 

Il registro mostra:

Sep 04 00:00:05 ndeavor-staging app/clock.1: #<NoMethodError: undefined method `woschedules_run_jobplans_path' for Clockwork:Module>

Se io rastrello percorsi, ottengo:

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

risposta

7

L'errore è in quella il percorso è inesistente. Poiché la route esiste, questo problema di solito significa che le rotte di Rails non sono state caricate nello scope corrente.

Potrebbe essere necessario includere aiutanti percorso Rails' in ordine per poter funzionare correttamente: 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 
} 

In alternativa, per asciugare un po 'si può semplicemente include tutti i collaboratori del percorso all'inizio del il file utilizzando:

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

# ... 
Problemi correlati