Class: Heimdall::Schedule
- Defined in:
- lib/heimdall/heimdall_model_schedule.rb
Class Method Summary collapse
-
.run ⇒ Object
run schedules in a loop.
-
.set_schedules ⇒ Object
sets schedules and fills in memory objects.
Instance Method Summary collapse
Class Method Details
.run ⇒ Object
run schedules in a loop
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/heimdall/heimdall_model_schedule.rb', line 35 def run return if @running @running = true require 'parse-cron' set_schedules if CONFIG[:disable_cron] puts 'Heimdall - CRON disabled in config' else Thread.new do loop do for schedule in @active_schedules if schedule.next_run_at < Time.now schedule.set_next_run schedule.job.call end end sleep 1 end end end end |
.set_schedules ⇒ Object
sets schedules and fills in memory objects
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/heimdall/heimdall_model_schedule.rb', line 9 def set_schedules @active_schedules = [] jobs = CONFIG.active_jobs.select{|el| el.cattr.every || el.cattr.cron } for job in Schedule.all job.delete unless jobs.map(&:to_s).include?(job) end for job_class in jobs if job_class.cattr.cron CronParser.new(job_class.cattr.cron) end row = self.first_or_new name: job_class.to_s row.every = job_class.cattr.every row.cron = job_class.cattr.cron row.next_run_at ||= Time.now - 1.day row.save @active_schedules.push row end run end |
Instance Method Details
#job ⇒ Object
64 65 66 |
# File 'lib/heimdall/heimdall_model_schedule.rb', line 64 def job name.constantize end |
#set_next_run ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/heimdall/heimdall_model_schedule.rb', line 68 def set_next_run if self[:cron].present? self[:next_run_at] = CronParser.new(cron).next(Time.now) elsif self[:every].present? self[:next_run_at] = Time.now + every.to_i.seconds end self[:last_run_at] = Time.now save end |