Class: SidekiqScheduler::SidekiqAdapter

Inherits:
Object
  • Object
show all
Defined in:
lib/sidekiq-scheduler/sidekiq_adapter.rb

Constant Summary collapse

SIDEKIQ_GTE_6_5_0 =
Gem::Version.new(Sidekiq::VERSION) >= Gem::Version.new('6.5.0')
SIDEKIQ_GTE_7_0_0 =
Gem::Version.new(Sidekiq::VERSION) >= Gem::Version.new('7.0.0')
SIDEKIQ_GTE_7_3_0 =
Gem::Version.new(Sidekiq::VERSION) >= Gem::Version.new('7.3.0')

Class Method Summary collapse

Class Method Details

.check_using_old_sidekiq_scheduler_config!(sidekiq_config) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/sidekiq-scheduler/sidekiq_adapter.rb', line 21

def self.check_using_old_sidekiq_scheduler_config!(sidekiq_config)
  %i[enabled dynamic dynamic_every schedule listened_queues_only rufus_scheduler_options].each do |option|
    if SIDEKIQ_GTE_7_0_0
      if sidekiq_config.key?(option)
        raise OptionNotSupportedAnymore, ":#{option} option should be under the :scheduler: key"
      end
    elsif SIDEKIQ_GTE_6_5_0
      unless sidekiq_config[option].nil?
        raise OptionNotSupportedAnymore, ":#{option} option should be under the :scheduler: key"
      end
    else
      if sidekiq_config.options.key?(option)
        raise OptionNotSupportedAnymore, ":#{option} option should be under the :scheduler: key"
      end
    end
  end
end

.fetch_scheduler_config_from_sidekiq(sidekiq_config) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
# File 'lib/sidekiq-scheduler/sidekiq_adapter.rb', line 9

def self.fetch_scheduler_config_from_sidekiq(sidekiq_config)
  return {} if sidekiq_config.nil?

  check_using_old_sidekiq_scheduler_config!(sidekiq_config)

  if SIDEKIQ_GTE_6_5_0
    sidekiq_config.fetch(:scheduler, {})
  else
    sidekiq_config.options.fetch(:scheduler, {})
  end
end

.redis_key_exists?(key_name) ⇒ Boolean

Returns:

  • (Boolean)


71
72
73
74
75
76
77
78
79
# File 'lib/sidekiq-scheduler/sidekiq_adapter.rb', line 71

def self.redis_key_exists?(key_name)
  Sidekiq.redis do |r|
    if SIDEKIQ_GTE_7_0_0
      r.exists(key_name) > 0
    else
      r.exists?(key_name)
    end
  end
end

.redis_zrangebyscore(key, from, to) ⇒ Object



81
82
83
84
85
86
87
88
89
# File 'lib/sidekiq-scheduler/sidekiq_adapter.rb', line 81

def self.redis_zrangebyscore(key, from, to)
  Sidekiq.redis do |r|
    if SIDEKIQ_GTE_7_0_0
      r.zrange(key, from, to, "BYSCORE")
    else
      r.zrangebyscore(key, from, to)
    end
  end
end

.sidekiq_queues(sidekiq_config) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/sidekiq-scheduler/sidekiq_adapter.rb', line 57

def self.sidekiq_queues(sidekiq_config)
  if SIDEKIQ_GTE_7_0_0
    if sidekiq_config.nil? || (sidekiq_config.respond_to?(:empty?) && sidekiq_config.empty?)
      Sidekiq.instance_variable_get(:@config).queues.map(&:to_s)
    else
      sidekiq_config.queues.map(&:to_s)
    end
  elsif SIDEKIQ_GTE_6_5_0
    Sidekiq[:queues].map(&:to_s)
  else
    Sidekiq.options[:queues].map(&:to_s)
  end
end

.start_schedule_manager(sidekiq_config:, schedule_manager:) ⇒ Object



39
40
41
42
43
44
45
46
47
# File 'lib/sidekiq-scheduler/sidekiq_adapter.rb', line 39

def self.start_schedule_manager(sidekiq_config:, schedule_manager:)
  if SIDEKIQ_GTE_6_5_0
    sidekiq_config[:schedule_manager] = schedule_manager
    sidekiq_config[:schedule_manager].start
  else
    sidekiq_config.options[:schedule_manager] = schedule_manager
    sidekiq_config.options[:schedule_manager].start
  end
end

.stop_schedule_manager(sidekiq_config:) ⇒ Object



49
50
51
52
53
54
55
# File 'lib/sidekiq-scheduler/sidekiq_adapter.rb', line 49

def self.stop_schedule_manager(sidekiq_config:)
  if SIDEKIQ_GTE_6_5_0
    sidekiq_config[:schedule_manager].stop
  else
    sidekiq_config.options[:schedule_manager].stop
  end
end