lib/sidekiq-scheduler.rb



require 'sidekiq'
require 'tilt/erb'

require_relative 'sidekiq/scheduler'
require_relative 'sidekiq-scheduler/version'
require_relative 'sidekiq-scheduler/manager'
require_relative 'sidekiq-scheduler/redis_manager'
require_relative 'sidekiq-scheduler/extensions/schedule'

SIDEKIQ_GTE_6_5_0 = Gem::Version.new(Sidekiq::VERSION) >= Gem::Version.new('6.5.0')

Sidekiq.configure_server do |config|

  config.on(:startup) do
    # schedules_changed's type was changed from SET to ZSET, so we remove old versions at startup
    SidekiqScheduler::RedisManager.clean_schedules_changed

    # Accessing the raw @config hash through .options is deprecated in 6.5 and to be removed in 7.0
    config_options = SIDEKIQ_GTE_6_5_0 ? Sidekiq.instance_variable_get(:@config) : config.options

    schedule_manager = SidekiqScheduler::Manager.new(config_options)
    if SIDEKIQ_GTE_6_5_0
      config[:schedule_manager] = schedule_manager
      config[:schedule_manager].start
    else
      config.options[:schedule_manager] = schedule_manager
      config.options[:schedule_manager].start
    end
  end

  config.on(:quiet) do
    if SIDEKIQ_GTE_6_5_0
      config[:schedule_manager].stop
    else
      config.options[:schedule_manager].stop
    end
  end

end