Se si vuole ritardare l'esecuzione del lavoro a 10 minuti più tardi, due opzioni:
SomeJob.set(wait: 10.minutes).perform_later(record)
SomeJob.new(record).enqueue(wait: 10.minutes)
Ritardare a un momento specifico da ora utilizzare wait_until
.
SomeJob.set(wait_until: Date.tomorrow.noon).perform_later(record)
SomeJob.new(record).enqueue(wait_until: Date.tomorrow.noon)
dettagli si rimanda al http://api.rubyonrails.org/classes/ActiveJob/Base.html.
Per lavori ricorrenti, è sufficiente inserire SomeJob.perform_now(record)
in un cronjob (whenever).
Se si utilizza Heroku, è sufficiente inserire SomeJob.perform_now(record)
in un'attività di rake programmata. Si prega di leggere ulteriori informazioni sul rake programmato qui: Heroku scheduler.
L'esempio di DelayedJob che hai postato sarebbe un lavoro una tantum in futuro rispetto a un lavoro ricorrente, che verrebbe ripetuto più e più volte. Che intendi? – rossta
Ne voglio uno che funzioni di nuovo e di nuovo. –
Non credo ci sia un'API ActiveJob per questo. A seconda del tuo sistema di background, ci sono estensioni (https://github.com/resque/resque-scheduler, https://github.com/ondrejbartas/sidekiq-cron) o semplicemente usa cron (https://github.com)/tomykaira/clockwork, https://github.com/javan/whenever) – rossta