class Rufus::Scheduler::Job

def do_trigger(time)

def do_trigger(time)
  t = Time.now
    # if there are mutexes, t might be really bigger than time
  Thread.current[:rufus_scheduler_job] = self
  Thread.current[:rufus_scheduler_time] = t
  Thread.current[:rufus_scheduler_timeout] = compute_timeout
  @last_time = t
  args = [ self, time ][0, @callable.arity]
  @callable.call(*args)
rescue KillSignal
  # discard
rescue StandardError => se
  @scheduler.on_error(self, se)
ensure
  post_trigger(time)
  Thread.current[:rufus_scheduler_job] = nil
  Thread.current[:rufus_scheduler_time] = nil
  Thread.current[:rufus_scheduler_timeout] = nil
end