diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d91073e..d7afa5a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,13 +12,13 @@ jobs: strategy: matrix: ruby-version: ['3.1', '2.7'] - sidekiq-version: ['4', '5', '6.0', '6.1', '6.x'] + sidekiq-version: ['4', '5', '6.0', '6.1', '6.x', '7.x'] steps: - uses: actions/checkout@v3 - name: Set up Ruby ${{ matrix.ruby-version }} - uses: ruby/setup-ruby@359bebbc29cbe6c87da6bc9ea3bc930432750108 + uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby-version }} @@ -32,7 +32,7 @@ jobs: run: bundle exec --gemfile=gemfiles/sidekiq_${{ matrix.sidekiq-version }}.gemfile rspec - name: Coveralls - uses: coverallsapp/github-action@v1 + uses: coverallsapp/github-action@v2 with: flag-name: run-${{ join(matrix.*, '-') }} parallel: true @@ -43,6 +43,6 @@ jobs: runs-on: ubuntu-latest steps: - name: Coveralls Finished - uses: coverallsapp/github-action@v1 + uses: coverallsapp/github-action@v2 with: parallel-finished: true diff --git a/gemfiles/sidekiq_7.x.gemfile b/gemfiles/sidekiq_7.x.gemfile new file mode 100644 index 0000000..a8c5cf1 --- /dev/null +++ b/gemfiles/sidekiq_7.x.gemfile @@ -0,0 +1,5 @@ +source "https://rubygems.org" + +gem 'sidekiq', '~> 7.0.0' + +gemspec path: '../' diff --git a/lib/sidekiq-rate-limiter/server.rb b/lib/sidekiq-rate-limiter/server.rb index 85eb2ae..32a0046 100644 --- a/lib/sidekiq-rate-limiter/server.rb +++ b/lib/sidekiq-rate-limiter/server.rb @@ -7,6 +7,8 @@ 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) + elsif (Sidekiq::VERSION >= '7.0') + config[:fetch_class] = Sidekiq::RateLimiter::Fetch else Sidekiq[:fetch] = Sidekiq::RateLimiter::Fetch.new(Sidekiq) end diff --git a/sidekiq-rate-limiter.gemspec b/sidekiq-rate-limiter.gemspec index baefa9c..ac91a1a 100644 --- a/sidekiq-rate-limiter.gemspec +++ b/sidekiq-rate-limiter.gemspec @@ -26,6 +26,6 @@ Gem::Specification.new do |s| s.add_development_dependency "simplecov" s.add_development_dependency "simplecov-lcov", '~> 0.8.0' - s.add_dependency "sidekiq", ">= 4.0", "< 7.0" + s.add_dependency "sidekiq", ">= 4.0", "< 8.0" s.add_dependency "redis_rate_limiter" end diff --git a/spec/sidekiq-rate-limiter/fetch_spec.rb b/spec/sidekiq-rate-limiter/fetch_spec.rb index 8db65e7..a0b51b9 100644 --- a/spec/sidekiq-rate-limiter/fetch_spec.rb +++ b/spec/sidekiq-rate-limiter/fetch_spec.rb @@ -30,6 +30,10 @@ def perform(arg1, arg2); end let(:options) do if Sidekiq::VERSION =~ /^(4|5|6\.[0-4])/ { queues: [queue, another_queue, another_queue] } + elsif Sidekiq::VERSION.start_with?('7.') + config = Sidekiq.default_configuration + config.queues = [queue, another_queue, another_queue] + config.default_capsule else Sidekiq.tap { |s| s[:queues] = [queue, another_queue, another_queue] } end @@ -59,8 +63,16 @@ def perform(arg1, arg2); end timeout = _timeout end - fetch = described_class.new options.merge!(:strict => true) - expect(fetch.queues_cmd).to eql(["queue:#{queue}", "queue:#{another_queue}", timeout]) + expected = [ "queue:#{queue}", "queue:#{another_queue}" ] + + if !Sidekiq::VERSION.start_with?('7.') + options.merge!(strict: true) + expected.push(timeout) + end + + fetch = described_class.new(options) + + expect(fetch.queues_cmd).to eql(expected) end it 'should retrieve work', queuing: true do diff --git a/spec/sidekiq-rate-limiter/server_spec.rb b/spec/sidekiq-rate-limiter/server_spec.rb index a7dbf56..ef47978 100644 --- a/spec/sidekiq-rate-limiter/server_spec.rb +++ b/spec/sidekiq-rate-limiter/server_spec.rb @@ -8,8 +8,10 @@ it 'should set Sidekiq.options[:fetch] as desired' do Sidekiq.configure_server do |config| - if Sidekiq::VERSION =~ /^(4|5|6.0)/ + if Sidekiq::VERSION =~ /^(4|5|6\.0)/ expect(Sidekiq.options[:fetch]).to eql(Sidekiq::RateLimiter::Fetch) + elsif Sidekiq::VERSION =~ /^7\./ + expect(Sidekiq.default_configuration[:fetch_class]).to eq(Sidekiq::RateLimiter::Fetch) else expect(Sidekiq.options[:fetch]).to be_a(Sidekiq::RateLimiter::Fetch) end @@ -18,8 +20,10 @@ it 'should inherit from Sidekiq::BasicFetch' do Sidekiq.configure_server do |config| - if Sidekiq::VERSION =~ /^(4|5|6.0)/ + if Sidekiq::VERSION =~ /^(4|5|6\.0)/ expect(Sidekiq.options[:fetch]).to be < Sidekiq::BasicFetch + elsif Sidekiq::VERSION =~ /^7\./ + expect(Sidekiq.default_configuration[:fetch_class]).to be < Sidekiq::BasicFetch else expect(Sidekiq.options[:fetch].class.ancestors[1]).to be(Sidekiq::BasicFetch) end