class Docket::Repeater
Attributes
frequencies[RW]
perform_action[RW]
perform_on[RW]
repeat[R]
scheduler[RW]
scheduler_action[RW]
scheduler_set_callback[RW]
storage[R]
Public Class Methods
new(args={})
click to toggle source
# File lib/docket/repeater.rb, line 10 def initialize args={} @frequencies = args[:frequencies] @perform_action = args[:perform_action] @perform_on = args[:perform_on] @scheduler = args[:scheduler] || Rufus::Scheduler.new @scheduler_action = args[:scheduler_action] @scheduler_set_callback = args[:scheduler_set_callback] || lambda {|scheduler|} @storage = args[:storage] || Docket.configuration.storage || Docket::Storage::Daybreak.new('/tmp/docket.rb') @repeat = args[:repeat] end
Public Instance Methods
items_for(frequency)
click to toggle source
# File lib/docket/repeater.rb, line 25 def items_for frequency Array(storage.read(frequency)) end
repeated_items()
click to toggle source
# File lib/docket/repeater.rb, line 21 def repeated_items frequencies.collect { |frequency| items_for frequency }.compact.flatten end
set()
click to toggle source
# File lib/docket/repeater.rb, line 29 def set frequencies.each do |frequency| if scheduler_action scheduler_action.call(self, frequency) else scheduler.every(frequency, :times => repeat) do items_for(frequency).each { |key| perform_on.perform(key, perform_action) } end end end scheduler_set_callback.call(scheduler) end
stop(force=false)
click to toggle source
# File lib/docket/repeater.rb, line 44 def stop force=false if force scheduler.shutdown(:kill) else scheduler.shutdown(:wait) end end