ratelimit 1.0.3 → 1.0.4

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
- SHA1:
3
- metadata.gz: 3ca5c11e810378b9f764fc4df1a9eb95c5be682f
4
- data.tar.gz: 29be916842600285b975409daa377a6ef0a47d7b
2
+ SHA256:
3
+ metadata.gz: 0b05cd16072c91b5a26037a5455e7ae1d5952eea22e0b17187a3e25be4623728
4
+ data.tar.gz: b57fdeba66adbe85f1303ff5c4bfedead5bc6ce5d7b1d4d3608da1ebc847bb5c
5
5
  SHA512:
6
- metadata.gz: a8bf4fdb9ccb0e298870c1cb6e19d44e90d9fb92d5f5f311dd7d68eff139150c38b1a7bfcd3175c0cff317b3d96fbe02c72f20a4acdf26243cd3c28f4a74d0b3
7
- data.tar.gz: fa1910970d4f93ec8e5c947012344a002bb0e8f7ed56b130fb8b454ae9ff373a140dd2e9e4865bd13772e51ba5485ca2448f0c2165f92d7549c41756d8935bbf
6
+ metadata.gz: ef451adc48b2e6248231e43a633544bcd823013059a0736d4fb284e1b4a3d8ab002cec7ebae9b9c26e1aad5ffa192a35c3f7a623b1fd438a20ed4526a8d0d989
7
+ data.tar.gz: bae41807e4b35c2050353d4bdebeb0ba35b0408464901682b86e6870f6c1744162773287fcca96fc35ca2b80daa0db8a844db9f4e7ee16b5cbe46d8eb28ee36f
data/CHANGELOG.md CHANGED
@@ -1,9 +1,21 @@
1
+ # 1.0.4
2
+
3
+ * #41 Remove redis deprecation warning
4
+
5
+ # 1.0.3
6
+
7
+ * #28 Fix counting the same buckets multiple times when the interval > bucket_span
8
+
9
+ # 1.0.2 09/09/2014
10
+
11
+ * #15 Raise error if bucket_count too small
12
+
1
13
  # 1.0.1 08/05/2014
14
+
2
15
  * #14 fix issue with wrong count on bucket_span == count(..interval) - @olgen
3
16
 
4
17
  # 1.0.0 06/15/2014
5
18
 
6
-
7
19
  * #7 Allow adding more than one to a counter - @Nielsomat
8
20
  * #8 Add Ruby 2 support and remove Ruby 1.8 support
9
21
  * #6 Clean up initialization method
@@ -16,7 +28,6 @@
16
28
  * Allow non-string subject and key -- Thanks Alexey Noskov
17
29
  Fix for bucket_expiry allowed to be larger than bucket_span and causing bad results -- Thanks Alexey Noskov
18
30
 
19
-
20
31
  # 0.0.2 10/29/2011
21
32
 
22
33
  Initial Relase
@@ -1,3 +1,3 @@
1
1
  class Ratelimit
2
- VERSION = "1.0.3"
2
+ VERSION = "1.0.4"
3
3
  end
data/lib/ratelimit.rb CHANGED
@@ -3,7 +3,7 @@ require 'redis-namespace'
3
3
 
4
4
  class Ratelimit
5
5
 
6
- # Create a RateLimit object.
6
+ # Create a Ratelimit object.
7
7
  #
8
8
  # @param [String] key A name to uniquely identify this rate limit. For example, 'emails'
9
9
  # @param [Hash] options Options hash
@@ -12,7 +12,7 @@ class Ratelimit
12
12
  # @option options [Integer] :bucket_expiry (@bucket_span) How long we keep data in each bucket before it is auto expired. Cannot be larger than the bucket_span.
13
13
  # @option options [Redis] :redis (nil) Redis client if you need to customize connection options
14
14
  #
15
- # @return [RateLimit] RateLimit instance
15
+ # @return [Ratelimit] Ratelimit instance
16
16
  #
17
17
  def initialize(key, options = {})
18
18
  @key = key
@@ -41,11 +41,11 @@ class Ratelimit
41
41
  def add(subject, count = 1)
42
42
  bucket = get_bucket
43
43
  subject = "#{@key}:#{subject}"
44
- redis.multi do
45
- redis.hincrby(subject, bucket, count)
46
- redis.hdel(subject, (bucket + 1) % @bucket_count)
47
- redis.hdel(subject, (bucket + 2) % @bucket_count)
48
- redis.expire(subject, @bucket_expiry)
44
+ redis.multi do |transaction|
45
+ transaction.hincrby(subject, bucket, count)
46
+ transaction.hdel(subject, (bucket + 1) % @bucket_count)
47
+ transaction.hdel(subject, (bucket + 2) % @bucket_count)
48
+ transaction.expire(subject, @bucket_expiry)
49
49
  end.first
50
50
  end
51
51
 
data/ratelimit.gemspec CHANGED
@@ -18,9 +18,9 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_dependency "redis", ">= 2.0.0"
21
+ spec.add_dependency "redis", ">= 3.0.0"
22
22
  spec.add_dependency "redis-namespace", ">= 1.0.0"
23
- spec.add_development_dependency "bundler", "~> 1.6"
23
+ spec.add_development_dependency "bundler", ">= 1.6"
24
24
  spec.add_development_dependency "rake"
25
25
  spec.add_development_dependency "fakeredis"
26
26
  spec.add_development_dependency "timecop"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ratelimit
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - E.J. Finneran
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-24 00:00:00.000000000 Z
11
+ date: 2023-01-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 2.0.0
19
+ version: 3.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 2.0.0
26
+ version: 3.0.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: redis-namespace
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -42,14 +42,14 @@ dependencies:
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '1.6'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.6'
55
55
  - !ruby/object:Gem::Dependency
@@ -178,7 +178,7 @@ homepage: https://github.com/ejfinneran/ratelimit
178
178
  licenses:
179
179
  - MIT
180
180
  metadata: {}
181
- post_install_message:
181
+ post_install_message:
182
182
  rdoc_options: []
183
183
  require_paths:
184
184
  - lib
@@ -193,9 +193,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
193
193
  - !ruby/object:Gem::Version
194
194
  version: '0'
195
195
  requirements: []
196
- rubyforge_project:
197
- rubygems_version: 2.2.2
198
- signing_key:
196
+ rubygems_version: 3.1.4
197
+ signing_key:
199
198
  specification_version: 4
200
199
  summary: Rate limiting backed by redis
201
200
  test_files: