class SidekiqScheduler::Manager

The delayed job router in the system. This manages the scheduled jobs pushed messages from Redis onto the work queues

Public Class Methods

new(config) click to toggle source
# File lib/sidekiq-scheduler/manager.rb, line 11
def initialize(config)
  set_current_scheduler_options(config)

  @scheduler_instance = SidekiqScheduler::Scheduler.new(config)
  SidekiqScheduler::Scheduler.instance = @scheduler_instance
  Sidekiq.schedule = config.schedule if @scheduler_instance.enabled
end

Public Instance Methods

start() click to toggle source
# File lib/sidekiq-scheduler/manager.rb, line 23
def start
  @scheduler_instance.load_schedule!
end
stop() click to toggle source
# File lib/sidekiq-scheduler/manager.rb, line 19
def stop
  @scheduler_instance.clear_schedule!
end
to_hash() click to toggle source

This method is needed to avoid exposing unnecessary information. Because ActiveSupport’s ‘as_json` traverses instance values to convert the object to a hash unless it responds to `to_hash`.

# File lib/sidekiq-scheduler/manager.rb, line 30
def to_hash
  {
    scheduler: @scheduler_instance.to_hash
  }
end

Private Instance Methods

set_current_scheduler_options(config) click to toggle source
# File lib/sidekiq-scheduler/manager.rb, line 38
def set_current_scheduler_options(config)
  enabled = SidekiqScheduler::Scheduler.enabled
  dynamic = SidekiqScheduler::Scheduler.dynamic
  dynamic_every = SidekiqScheduler::Scheduler.dynamic_every
  listened_queues_only = SidekiqScheduler::Scheduler.listened_queues_only

  config.enabled = enabled unless enabled.nil?
  config.dynamic = dynamic unless dynamic.nil?
  config.dynamic_every = dynamic_every unless dynamic_every.nil?
  unless Sidekiq.schedule.nil? || (Sidekiq.schedule.respond_to?(:empty?) && Sidekiq.schedule.empty?)
    config.schedule = Sidekiq.schedule
  end
  config.listened_queues_only = listened_queues_only unless listened_queues_only.nil?
end