Skip to content

Commit a97aa19

Browse files
authored
2.0.0: Sidekiq 7 compatibility (#31)
* 2.0.0: Sidekiq 7 compatibility * Small optimization on redis_handler validation
1 parent 0942634 commit a97aa19

File tree

8 files changed

+38
-21
lines changed

8 files changed

+38
-21
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77
## [Unreleased]
88

99
### Changed
10+
11+
## [2.0.0] - 2025-06-17
12+
13+
- [BREAKING] Sidekiq major version now targets 7.X
14+
- [BREAKING] SidekiqScheduler major version now targets 5.X to support Sidekiq 7
15+
- [BREAKING] SidekiqBus must now be configured with a Redis pool. See the README for more details.
1016
- [Development] Discontinues use of FakeRedis in favor of real Redis for testing.
1117

1218
## [1.1.0] - 2025-05-13

lib/sidekiq-bus.rb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88

99
module SidekiqBus
1010
ConfigurationError = Class.new(StandardError)
11+
REDIS_HANDLER_ERROR_MESSAGE = 'Please set SidekiqBus.redis_handler to a Callable that accepts a block and yields a '\
12+
'Redis instance. See the SidekiqBus README for more details.'
1113

1214
# This method will analyze the current queues and generate an array that
1315
# can operate as the sidekiq queues configuration. It should be based on how
@@ -46,20 +48,18 @@ def self.generate_weighted_queues(overrides: {}, default: 1)
4648
end
4749

4850
def self.redis_handler=(handler)
51+
unless handler.respond_to?(:call)
52+
raise ConfigurationError, REDIS_HANDLER_ERROR_MESSAGE
53+
end
4954
@redis_handler = handler
50-
validate_redis_handler
5155
end
5256

5357
def self.redis(&block)
54-
validate_redis_handler
58+
raise ConfigurationError, REDIS_HANDLER_ERROR_MESSAGE unless @redis_handler
5559
@redis_handler.call(&block)
5660
end
5761

5862
def self.validate_redis_handler
59-
unless @redis_handler.respond_to?(:call)
60-
raise ConfigurationError, 'Please set SidekiqBus.redis_handler to a Callable that accepts a block and yields a '\
61-
'Redis instance. See the SidekiqBus README for more details.'
62-
end
6363
end
6464
end
6565

lib/sidekiq_bus/adapter.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ def set_schedule(queue_name)
6666
description: 'Enqueues a heart beat every minute for the queue-bus'
6767
)
6868

69-
::Sidekiq::Scheduler.instance.update_schedule unless ::Sidekiq::Scheduler.instance.dynamic
69+
# If dynamic is enabled, this will propagate through a different mechanism
70+
SidekiqScheduler::Scheduler.instance.reload_schedule! unless ::Sidekiq::Scheduler.instance.dynamic
7071
end
7172
end
7273
end

lib/sidekiq_bus/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# frozen_string_literal: true
22

33
module SidekiqBus
4-
VERSION = '1.1.0'
4+
VERSION = '2.0.0'
55
end

sidekiq-bus.gemspec

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,11 @@ Gem::Specification.new do |s|
1717
s.require_paths = ["lib"]
1818

1919
s.add_dependency('queue-bus', ['>= 0.7', '< 1'])
20-
s.add_dependency('sidekiq', ['>= 3.0.0', '< 7.0'])
2120
s.add_dependency('redis', ['>= 4.0', '< 6.0'])
22-
s.add_dependency('rack', "< 3.0") # Sidekiq 6 was sunset before Rack 3.0 and does not support it
23-
s.add_dependency('sidekiq-scheduler', ['>= 3.0', '< 5.0'])
21+
s.add_dependency('sidekiq', ['>= 7.0.0', '< 8.0'])
22+
s.add_dependency('sidekiq-scheduler', ['>= 5.0', '< 6.0'])
2423

2524
s.add_development_dependency("rspec")
26-
s.add_development_dependency("redis-namespace")
2725
s.add_development_dependency("pry")
2826
s.add_development_dependency("timecop")
2927
s.add_development_dependency("json_pure")

spec/adapter/integration_spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,14 +87,14 @@
8787
val = QueueBus.redis { |redis| redis.lpop('queue:bus_incoming') }
8888
expect(val).to eq(nil) # nothing really added
8989

90-
Sidekiq::Scheduled::Poller.new(Sidekiq).enqueue
90+
Sidekiq::Scheduled::Poller.new(Sidekiq.default_configuration).enqueue
9191

9292
val = QueueBus.redis { |redis| redis.lpop('queue:bus_incoming') }
9393
expect(val).to eq(nil) # nothing added yet
9494

9595
# process scheduler in future
9696
Timecop.freeze(worktime) do
97-
Sidekiq::Scheduled::Poller.new(Sidekiq).enqueue
97+
Sidekiq::Scheduled::Poller.new(Sidekiq.default_configuration).enqueue
9898

9999
val = QueueBus.redis { |redis| redis.lpop('queue:bus_incoming') }
100100
hash = JSON.parse(val)

spec/adapter_spec.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@
1919

2020
around do |example|
2121
begin
22-
old = Sidekiq.options[:lifecycle_events][:startup]
23-
Sidekiq.options[:lifecycle_events][:startup] = []
22+
old = Sidekiq.default_configuration[:lifecycle_events][:startup]
23+
Sidekiq.default_configuration[:lifecycle_events][:startup] = []
2424
example.run
2525
ensure
26-
Sidekiq.options[:lifecycle_events][:startup] = old
26+
Sidekiq.default_configuration[:lifecycle_events][:startup] = old
2727
end
2828
end
2929

@@ -65,7 +65,7 @@
6565
allow(Sidekiq::Scheduler.instance).to receive(:dynamic).and_return(true)
6666

6767
# Simulate running startup events
68-
Sidekiq.options[:lifecycle_events][:startup].each(&:call)
68+
Sidekiq.default_configuration[:lifecycle_events][:startup].each(&:call)
6969
end
7070

7171
it_behaves_like 'a scheduled heartbeat'
@@ -76,7 +76,7 @@
7676
allow(Sidekiq::Scheduler.instance).to receive(:dynamic).and_return(false)
7777

7878
# Simulate running startup events
79-
Sidekiq.options[:lifecycle_events][:startup].each(&:call)
79+
Sidekiq.default_configuration[:lifecycle_events][:startup].each(&:call)
8080
end
8181

8282
it_behaves_like 'a scheduled heartbeat'

spec/spec_helper.rb

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44
require 'queue-bus'
55
require 'adapter/support'
66
require 'pry'
7+
require 'redis'
8+
9+
# Require some private Sidekiq APIs to simulate internal scheduling behavior
10+
require "sidekiq/capsule"
711

812
reset_test_adapter
913

@@ -33,7 +37,6 @@
3337
end
3438

3539
redis_pool = ConnectionPool.new { Redis.new(url: redis_url) }
36-
Sidekiq.redis = redis_pool
3740
SidekiqBus.redis_handler = redis_pool.method(:with).to_proc
3841

3942
require 'fileutils'
@@ -45,9 +48,18 @@
4548

4649
logger = Logger.new(File.open(log_file, 'a'))
4750

48-
Sidekiq.logger = logger
4951
QueueBus.logger = logger
5052

53+
Sidekiq.configure_server do |config|
54+
config.redis = { url: redis_url }
55+
config.logger = logger
56+
end
57+
58+
Sidekiq.configure_client do |config|
59+
config.redis = { url: redis_url }
60+
config.logger = logger
61+
end
62+
5163
require 'sidekiq/testing'
5264

5365
module QueueBus

0 commit comments

Comments
 (0)