ratelimit 1.0.3 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
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: