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
  do_call(time, true)
ensure
  @last_work_time =
    Time.now - Thread.current[:rufus_scheduler_time]
  @mean_work_time =
    ((@count - 1) * @mean_work_time + @last_work_time) / @count
  post_trigger(time)
  Thread.current[:rufus_scheduler_job] = nil
  Thread.current[:rufus_scheduler_time] = nil
  Thread.current[:rufus_scheduler_timeout] = nil
end