class Blender::Timer

Timer class provides a simple dsl for running blender jobs periodically. It uses Rufus::Scheduler for scheduling jobs

Public Class Methods

new() click to toggle source
# File lib/blender/timer.rb, line 25
def initialize
  @scheduled_jobs = []
end

Public Instance Methods

join() click to toggle source
# 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) click to toggle source
# File lib/blender/timer.rb, line 29
def schedule(name, &block)
  job = Blender::ScheduledJob.new(name)
  job.instance_eval(&block)
  @scheduled_jobs << job
end