prop 2.5.0 → 2.6.0

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: d0fe432ea00485ac163d99cc47cc62d515bf67fb
4
- data.tar.gz: a6edac3e0e50fdaed49664fbdb4bd46419e81a27
2
+ SHA256:
3
+ metadata.gz: bf33dac797d0f3b3cf7126709f1622e3069b7cf476f0bfde211178b3e4e743e1
4
+ data.tar.gz: e166a98af608dab54400289bb8fd28738b4ba8ab18ee0604613e75907ae4ec5c
5
5
  SHA512:
6
- metadata.gz: 67390eaadb265153db7845785824a3f27b3bcb97db533b277d14b44a121c70deca9105bee5565541dabd53e374f67adff6da539346ea4f98f5bc8d730d156960
7
- data.tar.gz: 66e0df0d0db24d5baf3ca3791b36dd0c9bf2f5bacc8d56637fb96d0f47266788483b752292e3b07337efc2d03c2e30d1b72e8330051ff64fa37984906566ad38
6
+ metadata.gz: 953571f21e59adbbd743490543fa4a7faf30b0e07951f3646bf7e3af5043ed2e24d0f93c6c5d375b1bb866ed5719e1eefe206bf4ce230b5001d80a7fc0f48cee
7
+ data.tar.gz: ca8960bee3c4f2789d4ddc9a07e489ee646c45cbbe9391da6b76f7e06f81711224093806e60a49f85cd5f1451389868f22b58f1259283b33cf7ffad21665948b
data/README.md CHANGED
@@ -18,7 +18,7 @@ To store values, prop needs a cache:
18
18
  Prop.cache = Rails.cache # needs read/write/increment methods
19
19
  ```
20
20
 
21
- Prop does not expire its used keys, so use memcached or similar, not redis.
21
+ When using the interval strategy, prop sets a key expiry to its interval. Because the leaky bucket strategy does not set a ttl, it is best to use memcached or similar for all prop caching, not redis.
22
22
 
23
23
  ## Setting a Callback
24
24
 
data/lib/prop.rb CHANGED
@@ -3,7 +3,7 @@ require "prop/limiter"
3
3
  require "forwardable"
4
4
 
5
5
  module Prop
6
- VERSION = "2.5.0"
6
+ VERSION = "2.6.0"
7
7
 
8
8
  # Short hand for accessing Prop::Limiter methods
9
9
  class << self
@@ -16,16 +16,16 @@ module Prop
16
16
  # options argument is kept for api consistency for all strategies
17
17
  def increment(cache_key, amount, options = {})
18
18
  raise ArgumentError, "Change amount must be a Integer, was #{amount.class}" unless amount.is_a?(Integer)
19
- cache.increment(cache_key, amount) || (cache.write(cache_key, amount, raw: true) && amount) # WARNING: potential race condition
19
+ cache.increment(cache_key, amount) || (cache.write(cache_key, amount, raw: true, expires_in: options.fetch(:interval, nil)) && amount) # WARNING: potential race condition
20
20
  end
21
21
 
22
22
  def decrement(cache_key, amount, options = {})
23
23
  raise ArgumentError, "Change amount must be a Integer, was #{amount.class}" unless amount.is_a?(Integer)
24
- cache.decrement(cache_key, amount) || (cache.write(cache_key, 0, raw: true) && 0) # WARNING: potential race condition
24
+ cache.decrement(cache_key, amount) || (cache.write(cache_key, 0, raw: true, expires_in: options.fetch(:interval, nil)) && 0) # WARNING: potential race condition
25
25
  end
26
26
 
27
- def reset(cache_key)
28
- cache.write(cache_key, zero_counter, raw: true)
27
+ def reset(cache_key, options = {})
28
+ cache.write(cache_key, zero_counter, raw: true, expires_in: options.fetch(:interval, nil))
29
29
  end
30
30
 
31
31
  def compare_threshold?(counter, operator, options)
@@ -62,7 +62,7 @@ module Prop
62
62
  [false, bucket]
63
63
  end
64
64
 
65
- def reset(cache_key)
65
+ def reset(cache_key, options = {})
66
66
  cache.write(cache_key, zero_counter, raw: true)
67
67
  end
68
68
 
data/lib/prop/limiter.rb CHANGED
@@ -120,7 +120,7 @@ module Prop
120
120
  # Returns nothing
121
121
  def reset(handle, key = nil, options = {})
122
122
  _options, cache_key, strategy = prepare(handle, key, options)
123
- strategy.reset(cache_key)
123
+ strategy.reset(cache_key, options)
124
124
  end
125
125
 
126
126
  # Public: Counts the number of times the given handle/key combination has been hit in the current window
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prop
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.0
4
+ version: 2.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Morten Primdahl
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-15 00:00:00.000000000 Z
11
+ date: 2021-08-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -115,8 +115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
115
115
  - !ruby/object:Gem::Version
116
116
  version: '0'
117
117
  requirements: []
118
- rubyforge_project:
119
- rubygems_version: 2.6.14
118
+ rubygems_version: 3.1.6
120
119
  signing_key:
121
120
  specification_version: 4
122
121
  summary: Gem for implementing rate limits.