module ScheduledJob

Constants

VERSION

Attributes

config[W]

Public Class Methods

config() click to toggle source
# File lib/scheduled_job.rb, line 13
def config
  @config ||= Config.new
end
configure() { |config| ... } click to toggle source
# File lib/scheduled_job.rb, line 32
def self.configure
  yield(config)
  validate_job_hash(config.jobs) if config.jobs
end
included(base) click to toggle source
# File lib/scheduled_job.rb, line 53
def self.included(base)
  base.extend ScheduledJobClassMethods
end
logger() click to toggle source
# File lib/scheduled_job.rb, line 28
def self.logger
  self.config.logger
end
reschedule() click to toggle source
# File lib/scheduled_job.rb, line 18
def self.reschedule
  config.jobs.each do |job, options|
    options[:count].times do
      job = job.to_s if job.is_a?(Symbol)
      job = job.constantize if job.is_a?(String)
      job.schedule_job
    end
  end if config.jobs
end
validate_job_hash(jobs) click to toggle source
# File lib/scheduled_job.rb, line 37
def self.validate_job_hash(jobs)
  jobs.each do |klass, options|
    raise ConfigError.new("Jobs config found invalid class: #{klass}") unless klass.is_a?(Class) || klass.is_a?(Symbol) || klass.is_a?(String)
    raise ConfigError.new("Jobs config found invalid job count: #{options[:count]}") unless options[:count].to_i >= 0
  end
end

Public Instance Methods

before(job) click to toggle source
# File lib/scheduled_job.rb, line 57
def before(job)
  callback = ScheduledJob.config.before_callback
  callback.call(job, self) if callback
end
error(job, exception) click to toggle source
# File lib/scheduled_job.rb, line 75
def error(job, exception)
  ScheduledJob.logger.warn("DelayedJob error: Job: #{job.id}, in queue #{self.class.queue_name}, exception: #{exception}")
  self.class.schedule_job
end
failure(job) click to toggle source
# File lib/scheduled_job.rb, line 69
def failure(job)
  ScheduledJob.logger.error("DelayedJob failed: processing job in queue #{self.class.queue_name} failed")
  job.update_attributes!(:failed_at => Time.now.utc)
  self.class.schedule_job
end
success(job) click to toggle source
# File lib/scheduled_job.rb, line 62
def success(job)
  callback = ScheduledJob.config.success_callback
  callback.call(job, self) if callback
  GC.start
  self.class.schedule_job(job)
end