Extends delayed_job to support recurring jobs.
Add it to your Gemfile:
gem 'delayed_job_recurring'Then define a task class. We like the concept of
interactors,
so we put our task classes in app/interactors. You could also put them in lib or even app/models.
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
endAnd 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)MyTask.schedule(run_at: '12:00')MyTask.schedule(run_every: 1.day, run_at: ['11:00', '6:00pm']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.