Class: Blender::Timer
- Inherits:
-
Object
- Object
- Blender::Timer
- Defined in:
- lib/blender/timer.rb
Overview
Timer class provides a simple dsl for running blender jobs periodically. It uses Rufus::Scheduler for scheduling jobs
Instance Method Summary collapse
-
#initialize ⇒ Timer
constructor
A new instance of Timer.
- #join ⇒ Object
- #schedule(name, &block) ⇒ Object
Constructor Details
#initialize ⇒ Timer
Returns a new instance of Timer.
25 26 27 |
# File 'lib/blender/timer.rb', line 25 def initialize @scheduled_jobs = [] end |
Instance Method Details
#join ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/blender/timer.rb', line 35 def join scheduler = Rufus::Scheduler.new @scheduled_jobs.each do |job| case job.schedule.first when :every scheduler.every(job.schedule[1]) do job.run end when :cron scheduler.cron(job.schedule[1]) do job.run end else raise UnsupportedFeature, "Unsupported scheduling: '#{job.schedule.first}'" end end scheduler.join end |
#schedule(name, &block) ⇒ Object
29 30 31 32 33 |
# File 'lib/blender/timer.rb', line 29 def schedule(name, &block) job = Blender::ScheduledJob.new(name) job.instance_eval(&block) @scheduled_jobs << job end |