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