sidekiq-rate-limiter 0.1.2 → 0.1.3

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: da0ce704c9994a18ca7c39d7538a5ae94c39077b13cbb778268852257b6a3f32
4
- data.tar.gz: cfef0d3b9cbd392603bdcc7e7f2110f10a91714623968dc058c425efc7ec871f
3
+ metadata.gz: f6a789f11daae2a1ae0f8d876c9a87e4245ba2604b22f6c980afbcb640127b61
4
+ data.tar.gz: 6525e4db367acc2bed4d215c6fce4f525e6432801761efdb44f6e03fb282a17f
5
5
  SHA512:
6
- metadata.gz: facff020ca688b54a9ce5b294b14f5f7a931c45efb9af22cbfbbb7c1d85c772697e076220ae17e7b6a249adf9c1f4c024de670072e15d8b520a799e15907babf
7
- data.tar.gz: fa1f1d598646e7601bd505cf6c5dab9979ae2bd3b39fb14e93d32c248036ef044ab1125d5f5e2e35dfbe70eb7f0d6869fc4fa2a1130fde06eba1f6a40cb94162
6
+ metadata.gz: 2277e1beeaa770bf971a22763ab7c0eb6bbd4fdb2e331bd65af5dba09df138e7c4b7ecc2fc91bfe3ef45e5dd4b06495db7edbfe41202664f72e78c64fac004bd
7
+ data.tar.gz: 9c23eee484ea10a10ccffec8bf733b9c6cfdbdca003158fb803e6a9fdfc703dc4bfcc489ad27967aaa5b2b08f5788ffa4c8c63a0fc21d624ab1681ec94eacc32
@@ -2,14 +2,12 @@ language: ruby
2
2
  cache: bundler
3
3
  sudo: false
4
4
  rvm:
5
- - 2.3.0
6
- - 2.2.4
7
- - 2.1.8
5
+ - 2.5.1
6
+ - 2.4.4
8
7
 
9
8
  gemfile:
10
- - 'gemfiles/sidekiq_2.gemfile'
11
- - 'gemfiles/sidekiq_3.gemfile'
12
9
  - 'gemfiles/sidekiq_4.gemfile'
10
+ - 'gemfiles/sidekiq_5.gemfile'
13
11
 
14
12
  deploy:
15
13
  provider: rubygems
data/README.md CHANGED
@@ -4,16 +4,15 @@ sidekiq-rate-limiter
4
4
  [![Gem Version](https://badge.fury.io/rb/sidekiq-rate-limiter.svg)](https://rubygems.org/gems/sidekiq-rate-limiter)
5
5
  [![Build Status](https://secure.travis-ci.org/enova/sidekiq-rate-limiter.svg?branch=master)](http://travis-ci.org/enova/sidekiq-rate-limiter)
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
- [![Dependency Status](https://gemnasium.com/enova/sidekiq-rate-limiter.svg)](https://gemnasium.com/enova/sidekiq-rate-limiter)
8
7
 
9
8
  Redis-backed, per-worker rate limits for job processing.
10
9
 
11
10
  ## Compatibility
12
11
 
13
- sidekiq-rate-limiter is actively tested against MRI versions 2.1, 2.2, and 2.3.
12
+ sidekiq-rate-limiter is actively tested against MRI versions 2.4 and 2.5.
14
13
 
15
14
  sidekiq-rate-limiter works by using a custom fetch class, the class responsible
16
- for pulling work from the queue stored in redis. Consequently you'll want to be
15
+ for pulling work from the queue stored in Redis. Consequently you'll want to be
17
16
  careful about using other gems that use a same strategy, [sidekiq-priority](https://github.com/socialpandas/sidekiq-priority)
18
17
  being one example.
19
18
 
@@ -32,7 +31,7 @@ class MyWorker
32
31
  end
33
32
  ```
34
33
 
35
- Then you wouldn't need to change anything.
34
+ Then you wouldn't need to change anything.
36
35
 
37
36
  ## Installation
38
37
 
@@ -60,12 +59,14 @@ require 'sidekiq-rate-limiter/server'
60
59
 
61
60
  Or, if you prefer, amend your Gemfile like so:
62
61
 
63
- gem 'sidekiq-rate-limiter', :require => 'sidekiq-rate-limiter/server'
62
+ ```ruby
63
+ gem 'sidekiq-rate-limiter', require: 'sidekiq-rate-limiter/server'
64
+ ```
64
65
 
65
- By default the limiter uses the name 'sidekiq-rate-limiter'. You can define the
66
- constant ```Sidekiq::RateLimiter::DEFAULT_LIMIT_NAME``` prior to requiring to
67
- change this. Alternatively, you can include a 'name' parameter in the configuration
68
- hash included in sidekiq_options
66
+ By default the limiter uses the name `sidekiq-rate-limiter`. You can define the
67
+ constant `Sidekiq::RateLimiter::DEFAULT_LIMIT_NAME` prior to requiring to
68
+ change this. Alternatively, you can include a `name` parameter in the configuration
69
+ hash included in `sidekiq_options`
69
70
 
70
71
  For example, the following:
71
72
 
@@ -73,11 +74,11 @@ For example, the following:
73
74
  class Job
74
75
  include Sidekiq::Worker
75
76
 
76
- sidekiq_options :queue => 'some_silly_queue',
77
- :rate => {
78
- :name => 'my_super_awesome_rate_limit',
79
- :limit => 50,
80
- :period => 3600, ## An hour
77
+ sidekiq_options queue: 'some_silly_queue',
78
+ rate: {
79
+ name: 'my_super_awesome_rate_limit',
80
+ limit: 50,
81
+ period: 3600, ## An hour
81
82
  }
82
83
 
83
84
  def perform(*args)
@@ -86,7 +87,7 @@ For example, the following:
86
87
  ```
87
88
 
88
89
  The configuration above would result in any jobs beyond the first 50 in a one
89
- hour period being delayed. The server will continue to fetch items from redis, &
90
+ hour period being delayed. The server will continue to fetch items from Redis, &
90
91
  will place any items that are beyond the threshold at the back of their queue.
91
92
 
92
93
  ### Dynamic Configuration
@@ -99,11 +100,11 @@ The `Proc` may receive as its arguments the same values that will be passed to `
99
100
  class Job
100
101
  include Sidekiq::Worker
101
102
 
102
- sidekiq_options :queue => "my_queue",
103
- :rate => {
104
- :name => ->(user_id, rate_limit) { user_id },
105
- :limit => ->(user_id, rate_limit) { rate_limit },
106
- :period => ->{ Date.today.monday? ? 2.hours : 4.hours }, # can ignore arguments
103
+ sidekiq_options queue: "my_queue",1
104
+ rate: {
105
+ name: ->(user_id, rate_limit) { user_id },
106
+ limit: ->(user_id, rate_limit) { rate_limit },
107
+ period: ->{ Date.today.monday? ? 2.hours : 4.hours }, # can ignore arguments
107
108
  }
108
109
 
109
110
  def perform(user_id, rate_limit)
@@ -120,9 +121,9 @@ limited multiple times are counted as 'processed' each time, so the stats balloo
120
121
 
121
122
  ## TODO
122
123
 
123
- * While it subclasses instead of monkey patching, setting Sidekiq.options[:fetch]
124
+ * While it subclasses instead of monkey patching, setting `Sidekiq.options[:fetch]`
124
125
  is still asking for interaction issues. It would be better for this to be directly
125
- in sidekiq or to use some other means to accomplish this goal.
126
+ in Sidekiq or to use some other means to accomplish this goal.
126
127
 
127
128
  ## Contributing
128
129
 
@@ -1,5 +1,5 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- gem 'sidekiq', '~> 2.0'
3
+ gem 'sidekiq', '~> 5.0'
4
4
 
5
5
  gemspec path: '../'
@@ -1,5 +1,4 @@
1
1
  require 'sidekiq'
2
- require 'celluloid' if Sidekiq::VERSION < "4"
3
2
  require 'sidekiq/fetch'
4
3
  require 'redis_rate_limiter'
5
4
 
@@ -27,7 +26,7 @@ module Sidekiq::RateLimiter
27
26
 
28
27
  options = {
29
28
  :limit => (limit.respond_to?(:call) ? limit.call(*args) : limit).to_i,
30
- :interval => (interval.respond_to?(:call) ? interval.call(*args) : interval).to_f,
29
+ :interval => (interval.respond_to?(:call) ? interval.call(*args) : interval).to_i,
31
30
  :name => (name.respond_to?(:call) ? name.call(*args) : name).to_s,
32
31
  }
33
32
 
@@ -90,7 +89,7 @@ module Sidekiq::RateLimiter
90
89
  worker_class = @message['class']
91
90
  options = Object.const_get(worker_class).get_sidekiq_options rescue {}
92
91
  server_rate = options['rate'] || options['throttle'] || {}
93
- @server_rate = server_rate.stringify_keys
92
+ @server_rate = server_rate.map { |k, v| [k.to_s, v] }.to_h
94
93
  end
95
94
  end
96
95
 
@@ -1,5 +1,5 @@
1
1
  module Sidekiq
2
2
  module RateLimiter
3
- VERSION = "0.1.2"
3
+ VERSION = "0.1.3"
4
4
  end
5
5
  end
@@ -26,6 +26,6 @@ Gem::Specification.new do |s|
26
26
  s.add_development_dependency "rspec", '~> 3.4'
27
27
  s.add_development_dependency "coveralls", '~> 0.8'
28
28
 
29
- s.add_dependency "sidekiq", ">= 2.0", "< 6.0"
29
+ s.add_dependency "sidekiq", ">= 4.0", "< 6.0"
30
30
  s.add_dependency "redis_rate_limiter"
31
31
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-rate-limiter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Docady
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2018-07-05 00:00:00.000000000 Z
13
+ date: 2019-10-15 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: pry
@@ -88,7 +88,7 @@ dependencies:
88
88
  requirements:
89
89
  - - ">="
90
90
  - !ruby/object:Gem::Version
91
- version: '2.0'
91
+ version: '4.0'
92
92
  - - "<"
93
93
  - !ruby/object:Gem::Version
94
94
  version: '6.0'
@@ -98,7 +98,7 @@ dependencies:
98
98
  requirements:
99
99
  - - ">="
100
100
  - !ruby/object:Gem::Version
101
- version: '2.0'
101
+ version: '4.0'
102
102
  - - "<"
103
103
  - !ruby/object:Gem::Version
104
104
  version: '6.0'
@@ -132,9 +132,8 @@ files:
132
132
  - LICENSE
133
133
  - README.md
134
134
  - Rakefile
135
- - gemfiles/sidekiq_2.gemfile
136
- - gemfiles/sidekiq_3.gemfile
137
135
  - gemfiles/sidekiq_4.gemfile
136
+ - gemfiles/sidekiq_5.gemfile
138
137
  - lib/sidekiq-rate-limiter.rb
139
138
  - lib/sidekiq-rate-limiter/fetch.rb
140
139
  - lib/sidekiq-rate-limiter/server.rb
@@ -1,5 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gem 'sidekiq', '~> 3.0'
4
-
5
- gemspec path: '../'