class Sidecloq::Runner

Runner encapsulates a locker and a scheduler, running scheduler when “elected” leader

Attributes

locker[R]
scheduler[R]

Public Class Methods

new(options = {}) click to toggle source
# File lib/sidecloq/runner.rb, line 9
def initialize(options = {})
  @locker = extract_locker(options)
  @scheduler = extract_scheduler(options)
end

Public Instance Methods

run() click to toggle source
# File lib/sidecloq/runner.rb, line 14
def run
  @thread = Thread.new do
    logger.info('Runner starting')
    @locker.with_lock do
      # i am the leader
      logger.info('Obtained leader lock')
      @scheduler.run
    end
    logger.info('Runner ending')
  end
end
stop(timeout = nil) click to toggle source
# File lib/sidecloq/runner.rb, line 26
def stop(timeout = nil)
  logger.debug('Stopping runner')
  @scheduler.stop(timeout)
  @locker.stop(timeout)
  @thread.join(timeout) if @thread
  logger.debug('Stopped runner')
end

Private Instance Methods

extract_locker(options) click to toggle source
# File lib/sidecloq/runner.rb, line 36
def extract_locker(options)
  return options[:locker] if options[:locker]
  Locker.new(options[:locker_options] || {})
end
extract_scheduler(options) click to toggle source
# File lib/sidecloq/runner.rb, line 41
def extract_scheduler(options)
  return options[:scheduler] if options[:scheduler]
  Scheduler.new(options[:schedule], options[:scheduler_options] || {})
end