# File lib/god/timer.rb, line 28 def initialize @events = [] @mutex = Mutex.new @timer = Thread.new do loop do begin # get the current time t = Time.now.to_i # iterate over each event and trigger any that are due @events.each do |event| if t >= event.at self.trigger(event) @mutex.synchronize do @events.delete(event) end else break end end # sleep until next check sleep INTERVAL rescue Exception => e message = format("Unhandled exception (%s): %s\n%s", e.class, e.message, e.backtrace.join("\n")) applog(nil, :fatal, message) sleep INTERVAL end end end end