Extends delayed_job to support recurring jobs.
Add it to your Gemfile:
Then define a task class. We like the concept of
so we put our task classes in
app/interactors. You could also put them in
lib or even
class MyTask include Delayed::RecurringJob run_every 1.day run_at '11:00am' timezone 'US/Pacific' queue 'slow-jobs' def perform # Do some work here! end end
And schedule it. In a rails app, you might put this in an initializer:
MyTask.schedule! # run every day at 11am Pacific time (accounting for daylight savings)
Passing options to schedule
Running at multiples times each day
MyTask.schedule(run_every: 1.day, run_at: ['11:00', '6:00pm']
Running on specific days of the week
MyTask.schedule(run_every: 1.week, run_at: ['sunday 8:00am', 'wednesday 8:00am'])
Many thanks to @ginjo and @kares for their work! This code was derived from https://gist.github.com/ginjo/3688965.