default_configuration()
click to toggle source
def default_configuration
{ :sleep_timeout => 1, :logger => Logger.new(STDOUT), :thread => false, :max_threads => 10 }
end
error_handler(&block)
click to toggle source
def error_handler(&block)
@error_handler = block if block_given?
@error_handler
end
every(period, job, options={}, &block)
click to toggle source
def every(period, job, options={}, &block)
if options[:at].respond_to?(:each)
every_with_multiple_times(period, job, options, &block)
else
register(period, job, block, options)
end
end
fire_callbacks(event, *args)
click to toggle source
def fire_callbacks(event, *args)
@callbacks[event].nil? || @callbacks[event].all? { |h| h.call(*args) }
end
handle_error(e)
click to toggle source
def handle_error(e)
error_handler.call(e) if error_handler
end
handler(&block)
click to toggle source
def handler(&block)
@handler = block if block_given?
raise NoHandlerDefined unless @handler
@handler
end
log(msg)
click to toggle source
def log(msg)
config[:logger].info(msg)
end
log_error(e)
click to toggle source
def log_error(e)
config[:logger].error(e)
end
on(event, options={}, &block)
click to toggle source
def on(event, options={}, &block)
raise "Unsupported callback #{event}" unless [:before_tick, :after_tick, :before_run, :after_run].include?(event.to_sym)
(@callbacks[event.to_sym]||=[]) << block
end
run()
click to toggle source
def run
log "Starting clock for #{@events.size} events: [ #{@events.map(&:to_s).join(' ')} ]"
loop do
tick
sleep(config[:sleep_timeout])
end
end
thread_available?()
click to toggle source
def thread_available?
Thread.list.count < config[:max_threads]
end
tick(t=Time.now)
click to toggle source
def tick(t=Time.now)
if (fire_callbacks(:before_tick))
events = events_to_run(t)
events.each do |event|
if (fire_callbacks(:before_run, event, t))
event.run(t)
fire_callbacks(:after_run, event, t)
end
end
end
fire_callbacks(:after_tick)
events
end