class Rufus::Scheduler

def step_trigger


cron jobs.
triggers every eligible pending jobs, then every eligible
def step_trigger
  now = Time.new
  if @exit_when_no_more_jobs
    if @pending_jobs.size < 1
      @stopped = true
      return
    end
    @dont_reschedule_every = true if at_job_count < 1
  end
  # TODO : eventually consider running cron / pending
  # job triggering in two different threads
  #
  # but well... there's the synchronization issue...
  #
  # cron jobs
  if now.sec != @last_cron_second
    @last_cron_second = now.sec
    #puts "step() @cron_jobs.size #{@cron_jobs.size}"
    @cron_jobs.each do |cron_id, cron_job|
      #puts "step() cron_id : #{cron_id}"
      #trigger(cron_job) if cron_job.matches?(now, @precision)
      trigger(cron_job) if cron_job.matches?(now)
    end
  end
  #
  # pending jobs
  now = now.to_f
    #
    # that's what at jobs do understand
  loop do
    break if @pending_jobs.length < 1
    job = @pending_jobs[0]
    break if job.at > now
    #if job.at <= now
      #
      # obviously
    trigger job
    @pending_jobs.delete_at 0
  end
end