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,
lib/delayed_cron/jobs/sucker_punch.rb
Defined Under Namespace
Modules: ClassMethods, Glue, Jobs
Classes: Railtie
Constant Summary
collapse
- VERSION =
"0.2.3"
Class Method Summary
collapse
Class Method Details
.adjust_interval(date, time_string) ⇒ Object
48
49
50
|
# File 'lib/delayed_cron.rb', line 48
def adjust_interval(date, time_string)
adjusted_date(date, time_string).to_i - Time.now.to_i
end
|
.adjusted_date(date, time_string) ⇒ Object
52
53
54
55
|
# File 'lib/delayed_cron.rb', line 52
def adjusted_date(date, time_string)
time = parse_time(time_string.split(/:|\ /).map(&:to_i))
DateTime.civil(date.year, date.month, date.day, time[:hours], time[:mins], time[:secs], Rational(time[:tz], 2400))
end
|
.beginning_of_day(seconds) ⇒ Object
44
45
46
|
# File 'lib/delayed_cron.rb', line 44
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(time_array) ⇒ Object
57
58
59
60
61
62
63
64
|
# File 'lib/delayed_cron.rb', line 57
def parse_time(time_array)
{
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
38
39
40
41
42
|
# File 'lib/delayed_cron.rb', line 38
def process_job(klass, method_name, options)
klass.constantize.send(method_name)
schedule(klass, method_name, options)
end
|
.schedule(klass, method_name, options) ⇒ Object
31
32
33
34
35
36
|
# File 'lib/delayed_cron.rb', line 31
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
|