Class: Philiprehberger::RateLimiter::Noop
- Inherits:
-
Object
- Object
- Philiprehberger::RateLimiter::Noop
- Defined in:
- lib/philiprehberger/rate_limiter/noop.rb
Overview
A limiter that always allows requests. Useful for tests and feature-flagged rollouts.
Instance Method Summary collapse
- #allow!(_key = :default, weight: 1) ⇒ Object
- #allow?(_key = :default, weight: 1) ⇒ Boolean
- #allow_batch(keys) ⇒ Object
-
#block(_key = :default, timeout: nil, weight: 1) ⇒ true
Blocking acquire.
- #clear ⇒ Object
- #drain(_key = :default) ⇒ Object
- #info(_key = :default) ⇒ Object
- #info_batch(keys) ⇒ Object
- #keys ⇒ Object
-
#on_reject(&block) ⇒ self
Register a callback for rejected requests.
- #peek(_key = :default) ⇒ Object
-
#refund(_key = :default, amount: 1) ⇒ nil
Return previously consumed slot(s).
- #remaining(_key = :default) ⇒ Object
- #reset(_key = :default) ⇒ Object
- #retry_after(_key = :default) ⇒ Object
- #stats(_key = :default) ⇒ Object
- #throttle(_key = :default, weight: 1, &block) ⇒ Object
- #used(_key = :default) ⇒ Object
-
#wait_time(_key = :default, weight: 1) ⇒ Float
Seconds until the next request would be allowed.
-
#window_reset_at(_key = :default) ⇒ nil
Time when the current window expires.
Instance Method Details
#allow!(_key = :default, weight: 1) ⇒ Object
16 17 18 19 |
# File 'lib/philiprehberger/rate_limiter/noop.rb', line 16 def allow!(_key = :default, weight: 1) _ = weight true end |
#allow?(_key = :default, weight: 1) ⇒ Boolean
7 8 9 10 |
# File 'lib/philiprehberger/rate_limiter/noop.rb', line 7 def allow?(_key = :default, weight: 1) _ = weight true end |
#allow_batch(keys) ⇒ Object
12 13 14 |
# File 'lib/philiprehberger/rate_limiter/noop.rb', line 12 def allow_batch(keys) keys.to_h { |key| [key, true] } end |
#block(_key = :default, timeout: nil, weight: 1) ⇒ true
Blocking acquire. Noop always has capacity, so it returns immediately.
72 73 74 75 76 |
# File 'lib/philiprehberger/rate_limiter/noop.rb', line 72 def block(_key = :default, timeout: nil, weight: 1) _ = timeout _ = weight true end |
#clear ⇒ Object
78 79 80 |
# File 'lib/philiprehberger/rate_limiter/noop.rb', line 78 def clear nil end |
#drain(_key = :default) ⇒ Object
37 38 39 |
# File 'lib/philiprehberger/rate_limiter/noop.rb', line 37 def drain(_key = :default) Float::INFINITY end |
#info(_key = :default) ⇒ Object
82 83 84 |
# File 'lib/philiprehberger/rate_limiter/noop.rb', line 82 def info(_key = :default) { remaining: Float::INFINITY, limit: Float::INFINITY, used: 0 } end |
#info_batch(keys) ⇒ Object
86 87 88 |
# File 'lib/philiprehberger/rate_limiter/noop.rb', line 86 def info_batch(keys) keys.to_h { |key| [key, info(key)] } end |
#keys ⇒ Object
94 95 96 |
# File 'lib/philiprehberger/rate_limiter/noop.rb', line 94 def keys [] end |
#on_reject(&block) ⇒ self
Register a callback for rejected requests.
Noop ignores the callback since nothing is ever rejected.
108 109 110 111 |
# File 'lib/philiprehberger/rate_limiter/noop.rb', line 108 def on_reject(&block) _ = block self end |
#peek(_key = :default) ⇒ Object
21 22 23 |
# File 'lib/philiprehberger/rate_limiter/noop.rb', line 21 def peek(_key = :default) true end |
#refund(_key = :default, amount: 1) ⇒ nil
Return previously consumed slot(s). No-op always has capacity, so this does nothing and mirrors the real limiters' signature.
49 50 51 52 |
# File 'lib/philiprehberger/rate_limiter/noop.rb', line 49 def refund(_key = :default, amount: 1) _ = amount nil end |
#remaining(_key = :default) ⇒ Object
25 26 27 |
# File 'lib/philiprehberger/rate_limiter/noop.rb', line 25 def remaining(_key = :default) Float::INFINITY end |
#reset(_key = :default) ⇒ Object
33 34 35 |
# File 'lib/philiprehberger/rate_limiter/noop.rb', line 33 def reset(_key = :default) nil end |
#retry_after(_key = :default) ⇒ Object
41 42 43 |
# File 'lib/philiprehberger/rate_limiter/noop.rb', line 41 def retry_after(_key = :default) 0.0 end |
#stats(_key = :default) ⇒ Object
90 91 92 |
# File 'lib/philiprehberger/rate_limiter/noop.rb', line 90 def stats(_key = :default) { allowed: 0, rejected: 0 } end |
#throttle(_key = :default, weight: 1, &block) ⇒ Object
98 99 100 101 |
# File 'lib/philiprehberger/rate_limiter/noop.rb', line 98 def throttle(_key = :default, weight: 1, &block) _ = weight { allowed: true, value: block.call } end |
#used(_key = :default) ⇒ Object
29 30 31 |
# File 'lib/philiprehberger/rate_limiter/noop.rb', line 29 def used(_key = :default) 0 end |
#wait_time(_key = :default, weight: 1) ⇒ Float
Seconds until the next request would be allowed. Always allowed.
57 58 59 60 |
# File 'lib/philiprehberger/rate_limiter/noop.rb', line 57 def wait_time(_key = :default, weight: 1) _ = weight 0.0 end |
#window_reset_at(_key = :default) ⇒ nil
Time when the current window expires. Noop has no window.
65 66 67 |
# File 'lib/philiprehberger/rate_limiter/noop.rb', line 65 def window_reset_at(_key = :default) nil end |