Class: Blender::Timer

Inherits:
Object
  • Object
show all
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

Constructor Details

#initializeTimer

Returns a new instance of Timer.



25
26
27
# File 'lib/blender/timer.rb', line 25

def initialize
  @scheduled_jobs = []
end

Instance Method Details

#joinObject



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