Module: DelayedCron
- Defined in:
- lib/delayed_cron.rb,
lib/delayed_cron/jobs.rb,
lib/delayed_cron/railtie.rb,
lib/delayed_cron/version.rb,
lib/delayed_cron/jobs/resque.rb,
lib/delayed_cron/jobs/sidekiq.rb,
lib/delayed_cron/jobs/delayed_job.rb
Defined Under Namespace
Modules: ClassMethods, Glue, Jobs
Classes: Railtie
Constant Summary
collapse
- VERSION =
"0.2.0"
Class Method Summary
collapse
Class Method Details
.adjust_interval(date, time_string) ⇒ Object
47
48
49
50
51
|
# File 'lib/delayed_cron.rb', line 47
def adjust_interval(date, time_string)
time = parse_time(time_string)
adjusted_date = DateTime.civil(date.year, date.month, date.day, time[:hours], time[:mins], time[:secs], Rational(time[:tz], 2400))
adjusted_date.to_i - Time.now.to_i
end
|
.beginning_of_day(seconds) ⇒ Object
43
44
45
|
# File 'lib/delayed_cron.rb', line 43
def beginning_of_day(seconds)
(Time.now + seconds).beginning_of_day
end
|
.define_cron_jobs ⇒ Object
15
16
17
18
19
20
21
22
|
# File 'lib/delayed_cron.rb', line 15
def define_cron_jobs
return false unless cron_jobs.present?
cron_jobs.each do |job|
klass, name = job.split(".")
DelayedCron.schedule(klass, name, { interval: default_interval })
end
end
|
.parse_time(string) ⇒ Object
53
54
55
56
57
58
59
|
# File 'lib/delayed_cron.rb', line 53
def parse_time(string)
time_array = string.split(/:|\ /).map(&:to_i)
time = {
hours: time_array[0], mins: time_array[1],
secs: time_array[2] || 0, tz: time_array[3] || Time.now.strftime("%z").to_i
}
end
|
.process_job(klass, method_name, options) ⇒ Object
37
38
39
40
41
|
# File 'lib/delayed_cron.rb', line 37
def process_job(klass, method_name, options)
klass.constantize.send(method_name)
schedule(klass, method_name, options)
end
|
.schedule(klass, method_name, options) ⇒ Object
30
31
32
33
34
35
|
# File 'lib/delayed_cron.rb', line 30
def schedule(klass, method_name, options)
if options[:at]
options[:interval] = adjust_interval(beginning_of_day(options[:interval].to_i), options[:at])
end
processor.enqueue_delayed_cron(klass, method_name, options)
end
|
.setup {|_self| ... } ⇒ Object
10
11
12
13
|
# File 'lib/delayed_cron.rb', line 10
def setup
yield self
define_cron_jobs
end
|