Skip to content

Latest commit

 

History

113 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status Code Climate

DelayedCron

run cron jobs with sidekiq, delayed_job, resque, or sucker_punch

DEPENDENCIES:

  • background process handler: sidekiq, delayed_job, resque, or sucker_punch

INSTALL

gem "delayed_cron", "~> 0.2.9"

USE IN MODEL

class Product < ActiveRecord::Base

  ...

  # Define in Model
  # * this is an alternative to the cron_jobs array in config
  #
  # OPTIONS: *optional
  # - interval  - override default_interval from setup
  # - at        - set time of day the cron should be run, timezone and seconds are optional
  # - time_zone - override default time zone for this job
  # - precision - set to :hourly to run job at an hourly interval instead of daily
  #
  # NOTE: only one of interval or at will be used, at will take precedence if
  # both are specified
  cron_job :some_method_to_run_as_cron, at: "00:00:00 -0400"
  cron_job :some_hourly_job, at: "15:00", precision: :hourly

  def self.some_method_to_run_as_cron
    # this method will be run every every day at midnight
  end

  def self.some_hourly_job
    # this method will be run hourly at fifteen minutes past the hour
  end

  ...

end

CONFIGURE

DelayedCron.setup do |config|

  # default interval to run cron jobs
  config.default_interval = 10.minutes

  # default time zone for scheduling `:at` jobs
  # accepts an ActiveSupport or TZInfo time zone name
  config.default_time_zone = "Eastern Time (US & Canada)"


  # array of methods to run at the above configured interval
  config.cron_jobs = [
    "SomeClass.expensive_task", # will run at default interval
    { job: "AnotherClass.other_expensive_task", interval: 1.hour } # override default
  ]

end

NOTES:

  • when using with sidekiq and rails there can be a config/initializer load order issue. Below is a fix to insure sidekiq is loaded first
Rails.application.config.after_initialize do
  DelayedCron.setup do |config|
    ...
  end
end

This initializes dealyed cron after all other initializers have loaded.

TO DO:

  • add support for Resque

About

run cron jobs using sidekiq, resque, delayed_job, or sucker_punch

Resources

Stars

16 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages