Module: ScheduledJob
- Defined in:
- lib/tasks/jobs.rb,
lib/scheduled_job.rb,
lib/scheduled_job/version.rb
Defined Under Namespace
Modules: ScheduledJobClassMethods
Classes: Config, ConfigError, Job
Constant Summary
collapse
- VERSION =
"0.2.5"
Class Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Class Attribute Details
.config ⇒ Object
13
14
15
|
# File 'lib/scheduled_job.rb', line 13
def config
@config ||= Config.new
end
|
Class Method Details
32
33
34
35
|
# File 'lib/scheduled_job.rb', line 32
def self.configure
yield(config)
validate_job_hash(config.jobs) if config.jobs
end
|
.logger ⇒ Object
28
29
30
|
# File 'lib/scheduled_job.rb', line 28
def self.logger
self.config.logger
end
|
.reschedule ⇒ Object
18
19
20
21
22
23
24
25
26
|
# 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) ⇒ Object
37
38
39
40
41
42
|
# 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
|
Instance Method Details
#before(job) ⇒ Object
57
58
59
60
|
# 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) ⇒ Object
75
76
77
78
|
# 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) ⇒ Object
69
70
71
72
73
|
# 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) ⇒ Object
62
63
64
65
66
67
|
# 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
|