Extends delayed_job to support recurring jobs
Ruby
Latest commit 6cb151e Dec 31, 2016 @afn afn Bump version

README.md

delayed_job_recurring

Build Status

Extends delayed_job to support recurring jobs.

Usage

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
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)

Advanced usage

Passing options to schedule

MyTask.schedule(run_at: '12:00')

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'])

Thanks!

Many thanks to @ginjo and @kares for their work! This code was derived from https://gist.github.com/ginjo/3688965.