diff --git a/.ruby-version b/.ruby-version new file mode 100644 index 0000000..49cdd66 --- /dev/null +++ b/.ruby-version @@ -0,0 +1 @@ +2.7.6 diff --git a/lib/sidekiq-rate-limiter/server.rb b/lib/sidekiq-rate-limiter/server.rb index e08d478..85eb2ae 100644 --- a/lib/sidekiq-rate-limiter/server.rb +++ b/lib/sidekiq-rate-limiter/server.rb @@ -2,5 +2,12 @@ require 'sidekiq-rate-limiter/fetch' Sidekiq.configure_server do |config| - Sidekiq.options[:fetch] = Sidekiq::RateLimiter::Fetch + # Backwards compatibility for Sidekiq < 6.1.0 (see https://github.com/mperham/sidekiq/pull/4602 for details) + if (Sidekiq::BasicFetch.respond_to?(:bulk_requeue)) + Sidekiq.options[:fetch] = Sidekiq::RateLimiter::Fetch + elsif (Sidekiq::VERSION < '6.5.0') # Sidekiq config was redesigned in https://github.com/mperham/sidekiq/pull/5340 + Sidekiq.options[:fetch] = Sidekiq::RateLimiter::Fetch.new(Sidekiq.options) + else + Sidekiq[:fetch] = Sidekiq::RateLimiter::Fetch.new(Sidekiq) + end end diff --git a/spec/sidekiq-rate-limiter/fetch_spec.rb b/spec/sidekiq-rate-limiter/fetch_spec.rb index 5a780fe..5b4d98e 100644 --- a/spec/sidekiq-rate-limiter/fetch_spec.rb +++ b/spec/sidekiq-rate-limiter/fetch_spec.rb @@ -27,7 +27,11 @@ def perform(arg1, arg2); end end end - let(:options) { { queues: [queue, another_queue, another_queue] } } + let(:options) { + s = Sidekiq + s[:queues] = [queue, another_queue, another_queue] + s + } let(:queue) { 'basic' } let(:another_queue) { 'some_other_queue' } let(:args) { ['I am some args'] } @@ -47,7 +51,7 @@ def perform(arg1, arg2); end Sidekiq::Fetcher::TIMEOUT end - fetch = described_class.new options.merge(:strict => true) + fetch = described_class.new options.merge!(:strict => true) expect(fetch.queues_cmd).to eql(["queue:#{queue}", "queue:#{another_queue}", timeout]) end diff --git a/spec/sidekiq-rate-limiter/server_spec.rb b/spec/sidekiq-rate-limiter/server_spec.rb index ae086de..3cf4f41 100644 --- a/spec/sidekiq-rate-limiter/server_spec.rb +++ b/spec/sidekiq-rate-limiter/server_spec.rb @@ -8,13 +8,13 @@ it 'should set Sidekiq.options[:fetch] as desired' do Sidekiq.configure_server do |config| - expect(Sidekiq.options[:fetch]).to eql(Sidekiq::RateLimiter::Fetch) + expect(Sidekiq.options[:fetch]).to be_a(Sidekiq::RateLimiter::Fetch) end end it 'should inherit from Sidekiq::BasicFetch' do Sidekiq.configure_server do |config| - expect(Sidekiq.options[:fetch]).to be < Sidekiq::BasicFetch + expect(Sidekiq.options[:fetch].class.ancestors[1]).to be(Sidekiq::BasicFetch) end end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index f7d062a..6c29688 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,5 +1,6 @@ require 'sidekiq' require 'sidekiq/testing' +require 'pry-byebug' ## Confirming presence of redis server executable abort "## `redis-server` not in path" if %x(which redis-server).empty?