module Deferrer::Runner

Public Instance Methods

run(options = {}) click to toggle source
# File lib/deferrer/runner.rb, line 4
def run(options = {})
  loop_frequency = options.fetch(:loop_frequency, 0.1)
  single_run     = options.fetch(:single_run, false)
  ignore_time    = options.fetch(:ignore_time, false)

  loop do
    begin
      while item = Deferrer::Queue.pop(ignore_time)
        Processor.new(item).process
      end
    rescue StandardError => e
      log(:error, "Error: #{e.class}: #{e.message}")
    rescue Exception => e
      log(:error, "Error: #{e.class}: #{e.message}")
      raise
    end

    break if single_run
    sleep loop_frequency
  end
end