sidekiq-rate-limiter 0.1.3 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f6a789f11daae2a1ae0f8d876c9a87e4245ba2604b22f6c980afbcb640127b61
4
- data.tar.gz: 6525e4db367acc2bed4d215c6fce4f525e6432801761efdb44f6e03fb282a17f
3
+ metadata.gz: eaf0f64591b7ddcbba0d15b889fdfbe2b639cce8b112a8be3e92ec9cac2dc07e
4
+ data.tar.gz: fbfadc77f1bf676221b3e8c268a4ac60d4a19bc55e3a22a74c2084b9e62c3ee2
5
5
  SHA512:
6
- metadata.gz: 2277e1beeaa770bf971a22763ab7c0eb6bbd4fdb2e331bd65af5dba09df138e7c4b7ecc2fc91bfe3ef45e5dd4b06495db7edbfe41202664f72e78c64fac004bd
7
- data.tar.gz: 9c23eee484ea10a10ccffec8bf733b9c6cfdbdca003158fb803e6a9fdfc703dc4bfcc489ad27967aaa5b2b08f5788ffa4c8c63a0fc21d624ab1681ec94eacc32
6
+ metadata.gz: 00bf480916d2764f62e2e96b377573bcfe266c05c95d8a395f5b1293c84d3122f11355fa311c9af019fc50b07ae4228c51e06e4ded5dcb571c040b158d5fb6b3
7
+ data.tar.gz: 2907155a2a62408dcb3e1e928669588bd269057215de35cbe41782ee130e514823ff9fdc618f6b132484151bf8ca652360b213c0eaf398fb20b0ff815e235570
@@ -0,0 +1,48 @@
1
+ name: Test
2
+
3
+ on:
4
+ push:
5
+ branches: [ main ]
6
+ pull_request:
7
+
8
+ jobs:
9
+ test:
10
+ runs-on: ubuntu-latest
11
+
12
+ strategy:
13
+ matrix:
14
+ ruby-version: ['3.1', '2.7']
15
+ sidekiq-version: ['4', '5', '6.0', '6.1', '6.x']
16
+
17
+ steps:
18
+ - uses: actions/checkout@v3
19
+
20
+ - name: Set up Ruby ${{ matrix.ruby-version }}
21
+ uses: ruby/setup-ruby@359bebbc29cbe6c87da6bc9ea3bc930432750108
22
+ with:
23
+ ruby-version: ${{ matrix.ruby-version }}
24
+
25
+ - name: Install dependencies
26
+ run: bundle install --gemfile=gemfiles/sidekiq_${{ matrix.sidekiq-version }}.gemfile
27
+
28
+ - name: Start Redis
29
+ uses: supercharge/redis-github-action@1.5.0
30
+
31
+ - name: Run tests
32
+ run: bundle exec --gemfile=gemfiles/sidekiq_${{ matrix.sidekiq-version }}.gemfile rspec
33
+
34
+ - name: Coveralls
35
+ uses: coverallsapp/github-action@v1
36
+ with:
37
+ flag-name: run-${{ join(matrix.*, '-') }}
38
+ parallel: true
39
+
40
+ finish:
41
+ needs: test
42
+ if: ${{ always() }}
43
+ runs-on: ubuntu-latest
44
+ steps:
45
+ - name: Coveralls Finished
46
+ uses: coverallsapp/github-action@v1
47
+ with:
48
+ parallel-finished: true
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.7.6
data/CHANGELOG.md CHANGED
@@ -1,3 +1,22 @@
1
+ ## 0.2.0 (Mar 1, 2023)
2
+
3
+ * Upstream fix for sidekiq 6.5.0 [#43, thanks to 5minpause]
4
+ * Add support for new Sidekiq's configuration model [#42, thanks to anero]
5
+ * gemspec: Drop defunct property rubyforge_project [#37, thanks to olleolleolle]
6
+
7
+ ## 0.1.3 (Oct 15, 2019)
8
+
9
+ * Fix errors when using with redis-rb > 4.1.0 [#30, #31]
10
+
11
+ ## 0.1.2 (Jul 5, 2018)
12
+
13
+ * Add (provisional) Sidekiq 5 support
14
+
15
+ ## 0.1.1 (Feb 15, 2016)
16
+
17
+ * Add Sidekiq 4 support
18
+ * Drop Ruby 1.9 support
19
+
1
20
  ## 0.1.0 (May 30, 2014)
2
21
 
3
22
  * Support callables for all configuration options
data/README.md CHANGED
@@ -2,14 +2,14 @@ sidekiq-rate-limiter
2
2
  ====================
3
3
 
4
4
  [![Gem Version](https://badge.fury.io/rb/sidekiq-rate-limiter.svg)](https://rubygems.org/gems/sidekiq-rate-limiter)
5
- [![Build Status](https://secure.travis-ci.org/enova/sidekiq-rate-limiter.svg?branch=master)](http://travis-ci.org/enova/sidekiq-rate-limiter)
5
+ [![Test Status](https://github.com/enova/sidekiq-rate-limiter/actions/workflows/test.yml/badge.svg)](https://github.com/enova/sidekiq-rate-limiter/actions/workflows/test.yml)
6
6
  [![Coverage Status](https://coveralls.io/repos/github/enova/sidekiq-rate-limiter/badge.svg?branch=master)](https://coveralls.io/github/enova/sidekiq-rate-limiter?branch=master)
7
7
 
8
8
  Redis-backed, per-worker rate limits for job processing.
9
9
 
10
10
  ## Compatibility
11
11
 
12
- sidekiq-rate-limiter is actively tested against MRI versions 2.4 and 2.5.
12
+ sidekiq-rate-limiter is actively tested against MRI versions 2.7 and 3.1.
13
13
 
14
14
  sidekiq-rate-limiter works by using a custom fetch class, the class responsible
15
15
  for pulling work from the queue stored in Redis. Consequently you'll want to be
@@ -0,0 +1,5 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem 'sidekiq', '~> 6.0.0'
4
+
5
+ gemspec path: '../'
@@ -0,0 +1,5 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem 'sidekiq', '~> 6.1.0'
4
+
5
+ gemspec path: '../'
@@ -0,0 +1,5 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem 'sidekiq', '~> 6.5.8'
4
+
5
+ gemspec path: '../'
@@ -2,5 +2,12 @@ require 'sidekiq-rate-limiter/version'
2
2
  require 'sidekiq-rate-limiter/fetch'
3
3
 
4
4
  Sidekiq.configure_server do |config|
5
- Sidekiq.options[:fetch] = Sidekiq::RateLimiter::Fetch
5
+ # Backwards compatibility for Sidekiq < 6.1.0 (see https://github.com/mperham/sidekiq/pull/4602 for details)
6
+ if (Sidekiq::BasicFetch.respond_to?(:bulk_requeue))
7
+ Sidekiq.options[:fetch] = Sidekiq::RateLimiter::Fetch
8
+ elsif (Sidekiq::VERSION < '6.5.0') # Sidekiq config was redesigned in https://github.com/mperham/sidekiq/pull/5340
9
+ Sidekiq.options[:fetch] = Sidekiq::RateLimiter::Fetch.new(Sidekiq.options)
10
+ else
11
+ Sidekiq[:fetch] = Sidekiq::RateLimiter::Fetch.new(Sidekiq)
12
+ end
6
13
  end
@@ -1,5 +1,5 @@
1
1
  module Sidekiq
2
2
  module RateLimiter
3
- VERSION = "0.1.3"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
@@ -13,7 +13,6 @@ Gem::Specification.new do |s|
13
13
  s.homepage = "https://github.com/enova/sidekiq-rate-limiter"
14
14
  s.summary = %q{Redis-backed, per-worker rate limits for job processing}
15
15
  s.description = %q{Redis-backed, per-worker rate limits for job processing}
16
- s.rubyforge_project = "nowarning"
17
16
 
18
17
  s.files = `git ls-files`.split("\n")
19
18
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -24,8 +23,9 @@ Gem::Specification.new do |s|
24
23
  s.add_development_dependency "pry-byebug"
25
24
  s.add_development_dependency "rake"
26
25
  s.add_development_dependency "rspec", '~> 3.4'
27
- s.add_development_dependency "coveralls", '~> 0.8'
26
+ s.add_development_dependency "simplecov"
27
+ s.add_development_dependency "simplecov-lcov", '~> 0.8.0'
28
28
 
29
- s.add_dependency "sidekiq", ">= 4.0", "< 6.0"
29
+ s.add_dependency "sidekiq", ">= 4.0", "< 7.0"
30
30
  s.add_dependency "redis_rate_limiter"
31
31
  end
@@ -27,7 +27,14 @@ RSpec.describe Sidekiq::RateLimiter::Fetch do
27
27
  end
28
28
  end
29
29
 
30
- let(:options) { { queues: [queue, another_queue, another_queue] } }
30
+ let(:options) do
31
+ if Sidekiq::VERSION =~ /^(4|5|6\.[0-4])/
32
+ { queues: [queue, another_queue, another_queue] }
33
+ else
34
+ Sidekiq.tap { |s| s[:queues] = [queue, another_queue, another_queue] }
35
+ end
36
+ end
37
+
31
38
  let(:queue) { 'basic' }
32
39
  let(:another_queue) { 'some_other_queue' }
33
40
  let(:args) { ['I am some args'] }
@@ -46,8 +53,13 @@ RSpec.describe Sidekiq::RateLimiter::Fetch do
46
53
  else
47
54
  Sidekiq::Fetcher::TIMEOUT
48
55
  end
56
+
57
+ if Sidekiq::VERSION.start_with?('6.5.')
58
+ _timeout = { timeout: timeout}
59
+ timeout = _timeout
60
+ end
49
61
 
50
- fetch = described_class.new options.merge(:strict => true)
62
+ fetch = described_class.new options.merge!(:strict => true)
51
63
  expect(fetch.queues_cmd).to eql(["queue:#{queue}", "queue:#{another_queue}", timeout])
52
64
  end
53
65
 
@@ -8,13 +8,21 @@ RSpec.describe Sidekiq::RateLimiter, 'server configuration' do
8
8
 
9
9
  it 'should set Sidekiq.options[:fetch] as desired' do
10
10
  Sidekiq.configure_server do |config|
11
- expect(Sidekiq.options[:fetch]).to eql(Sidekiq::RateLimiter::Fetch)
11
+ if Sidekiq::VERSION =~ /^(4|5|6.0)/
12
+ expect(Sidekiq.options[:fetch]).to eql(Sidekiq::RateLimiter::Fetch)
13
+ else
14
+ expect(Sidekiq.options[:fetch]).to be_a(Sidekiq::RateLimiter::Fetch)
15
+ end
12
16
  end
13
17
  end
14
18
 
15
19
  it 'should inherit from Sidekiq::BasicFetch' do
16
20
  Sidekiq.configure_server do |config|
17
- expect(Sidekiq.options[:fetch]).to be < Sidekiq::BasicFetch
21
+ if Sidekiq::VERSION =~ /^(4|5|6.0)/
22
+ expect(Sidekiq.options[:fetch]).to be < Sidekiq::BasicFetch
23
+ else
24
+ expect(Sidekiq.options[:fetch].class.ancestors[1]).to be(Sidekiq::BasicFetch)
25
+ end
18
26
  end
19
27
  end
20
28
  end
data/spec/spec_helper.rb CHANGED
@@ -1,35 +1,11 @@
1
1
  require 'sidekiq'
2
2
  require 'sidekiq/testing'
3
-
4
- ## Confirming presence of redis server executable
5
- abort "## `redis-server` not in path" if %x(which redis-server).empty?
6
- redis_dir = "#{File.dirname(__FILE__)}/support/redis"
7
-
8
- ## Redis configuration
9
- REDIS_CONFIG = <<-CONF
10
- daemonize yes
11
- pidfile #{redis_dir}/test.pid
12
- port 6380
13
- timeout 300
14
- save 900 1
15
- save 300 10
16
- save 60 10000
17
- dbfilename test.rdb
18
- dir #{redis_dir}
19
- loglevel warning
20
- logfile stdout
21
- databases 1
22
- CONF
23
-
24
- %x(echo '#{REDIS_CONFIG}' > #{redis_dir}/test.conf)
25
- redis_command = "redis-server #{redis_dir}/test.conf"
26
- %x[ #{redis_command} ]
27
- ##
3
+ require 'pry-byebug'
28
4
 
29
5
  ## Configuring sidekiq
30
6
  options = {
31
7
  logger: nil,
32
- redis: { :url => "redis://localhost:6380/0" }
8
+ redis: { url: ENV.fetch('REDIS_URL', 'redis://localhost:6379/0') }
33
9
  }
34
10
 
35
11
  Sidekiq.configure_client do |config|
@@ -43,12 +19,27 @@ Sidekiq.configure_server do |config|
43
19
  config.send("#{option}=", value)
44
20
  end
45
21
  end
46
- ##
47
22
 
23
+
24
+ ## Code Coverage
48
25
  require 'simplecov'
49
26
 
27
+ SimpleCov.start do
28
+ if ENV['CI']
29
+ require 'simplecov-lcov'
30
+
31
+ SimpleCov::Formatter::LcovFormatter.config do |c|
32
+ c.report_with_single_file = true
33
+ c.single_report_path = 'coverage/lcov.info'
34
+ end
35
+
36
+ formatter SimpleCov::Formatter::LcovFormatter
37
+ end
38
+
39
+ add_filter %w[version.rb spec/]
40
+ end
41
+
50
42
  require File.expand_path("../../lib/sidekiq-rate-limiter", __FILE__)
51
- ##
52
43
 
53
44
  ## Hook to set Sidekiq::Testing mode using rspec tags
54
45
  RSpec.configure do |config|
@@ -76,18 +67,5 @@ RSpec.configure do |config|
76
67
  elsif Sidekiq::Testing.fake?
77
68
  Sidekiq::Worker.clear_all
78
69
  end
79
-
80
- end
81
-
82
- config.after(:all) do
83
- ## Stopping Redis
84
- ps = %x(ps -A -o pid,command | grep '#{redis_command}' | grep -v grep).split($/)
85
- pids = ps.map { |p| p.split(/\s+/).reject(&:empty?).first.to_i }
86
- pids.each { |pid| Process.kill("TERM", pid) }
87
-
88
- ## Cleaning up
89
- sleep 0.1
90
- %x(rm -rf #{redis_dir}/*)
91
70
  end
92
71
  end
93
- ##
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-rate-limiter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Docady
8
8
  - Blake Thomas
9
9
  - Enova
10
- autorequire:
10
+ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2019-10-15 00:00:00.000000000 Z
13
+ date: 2023-03-01 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: pry
@@ -69,19 +69,33 @@ dependencies:
69
69
  - !ruby/object:Gem::Version
70
70
  version: '3.4'
71
71
  - !ruby/object:Gem::Dependency
72
- name: coveralls
72
+ name: simplecov
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ - !ruby/object:Gem::Dependency
86
+ name: simplecov-lcov
73
87
  requirement: !ruby/object:Gem::Requirement
74
88
  requirements:
75
89
  - - "~>"
76
90
  - !ruby/object:Gem::Version
77
- version: '0.8'
91
+ version: 0.8.0
78
92
  type: :development
79
93
  prerelease: false
80
94
  version_requirements: !ruby/object:Gem::Requirement
81
95
  requirements:
82
96
  - - "~>"
83
97
  - !ruby/object:Gem::Version
84
- version: '0.8'
98
+ version: 0.8.0
85
99
  - !ruby/object:Gem::Dependency
86
100
  name: sidekiq
87
101
  requirement: !ruby/object:Gem::Requirement
@@ -91,7 +105,7 @@ dependencies:
91
105
  version: '4.0'
92
106
  - - "<"
93
107
  - !ruby/object:Gem::Version
94
- version: '6.0'
108
+ version: '7.0'
95
109
  type: :runtime
96
110
  prerelease: false
97
111
  version_requirements: !ruby/object:Gem::Requirement
@@ -101,7 +115,7 @@ dependencies:
101
115
  version: '4.0'
102
116
  - - "<"
103
117
  - !ruby/object:Gem::Version
104
- version: '6.0'
118
+ version: '7.0'
105
119
  - !ruby/object:Gem::Dependency
106
120
  name: redis_rate_limiter
107
121
  requirement: !ruby/object:Gem::Requirement
@@ -123,10 +137,10 @@ executables: []
123
137
  extensions: []
124
138
  extra_rdoc_files: []
125
139
  files:
140
+ - ".github/workflows/test.yml"
126
141
  - ".gitignore"
127
142
  - ".rspec"
128
- - ".simplecov"
129
- - ".travis.yml"
143
+ - ".ruby-version"
130
144
  - CHANGELOG.md
131
145
  - Gemfile
132
146
  - LICENSE
@@ -134,6 +148,9 @@ files:
134
148
  - Rakefile
135
149
  - gemfiles/sidekiq_4.gemfile
136
150
  - gemfiles/sidekiq_5.gemfile
151
+ - gemfiles/sidekiq_6.0.gemfile
152
+ - gemfiles/sidekiq_6.1.gemfile
153
+ - gemfiles/sidekiq_6.x.gemfile
137
154
  - lib/sidekiq-rate-limiter.rb
138
155
  - lib/sidekiq-rate-limiter/fetch.rb
139
156
  - lib/sidekiq-rate-limiter/server.rb
@@ -147,7 +164,7 @@ homepage: https://github.com/enova/sidekiq-rate-limiter
147
164
  licenses:
148
165
  - MIT
149
166
  metadata: {}
150
- post_install_message:
167
+ post_install_message:
151
168
  rdoc_options: []
152
169
  require_paths:
153
170
  - lib
@@ -162,9 +179,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
162
179
  - !ruby/object:Gem::Version
163
180
  version: '0'
164
181
  requirements: []
165
- rubyforge_project: nowarning
166
- rubygems_version: 2.7.7
167
- signing_key:
182
+ rubygems_version: 3.1.6
183
+ signing_key:
168
184
  specification_version: 4
169
185
  summary: Redis-backed, per-worker rate limits for job processing
170
- test_files: []
186
+ test_files:
187
+ - spec/sidekiq-rate-limiter/fetch_spec.rb
188
+ - spec/sidekiq-rate-limiter/server_spec.rb
189
+ - spec/spec_helper.rb
190
+ - spec/support/redis/.keep
data/.simplecov DELETED
@@ -1,6 +0,0 @@
1
- require 'coveralls'
2
-
3
- Coveralls.wear! do
4
- add_filter "vendor"
5
- add_filter "spec"
6
- end
data/.travis.yml DELETED
@@ -1,18 +0,0 @@
1
- language: ruby
2
- cache: bundler
3
- sudo: false
4
- rvm:
5
- - 2.5.1
6
- - 2.4.4
7
-
8
- gemfile:
9
- - 'gemfiles/sidekiq_4.gemfile'
10
- - 'gemfiles/sidekiq_5.gemfile'
11
-
12
- deploy:
13
- provider: rubygems
14
- api_key:
15
- secure: "VX48kpd9UySMWSDMwjxaNZy14RW1usU7eFLGNeohjCzxUsCywn+mS5/IZHl56vDXWJp7JwnboDiIa74hGV86PcSEM7kr+DAZO33iCazMNTpoWDiH1iJfj0jZbO2rOvx0rGI9fGYcC9xfyKQ37hVb13Eo0bnKa0YX30HArnx7EFo="
16
- on:
17
- tags: true
18
- all_branches: true