Class: Labkit::RateLimit::Evaluator Private
- Inherits:
-
Object
- Object
- Labkit::RateLimit::Evaluator
- Defined in:
- lib/labkit/rate_limit/evaluator.rb
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Evaluator holds the static parts of a rate limit check (name, rules, Redis) and exposes a per-request #check(identifier) method.
Constant Summary collapse
- REDIS_KEY_PREFIX =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
"labkit:rl"- CHAR_VALUE_MAX_LENGTH =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
200- MISSING_VALUE_SENTINEL =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
"_unknown_"
Instance Method Summary collapse
- #check(identifier) ⇒ Object private
-
#initialize(name:, rules:, redis:, logger:) ⇒ Evaluator
constructor
private
A new instance of Evaluator.
Constructor Details
#initialize(name:, rules:, redis:, logger:) ⇒ Evaluator
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of Evaluator.
15 16 17 18 19 20 |
# File 'lib/labkit/rate_limit/evaluator.rb', line 15 def initialize(name:, rules:, redis:, logger:) @name = name @rules = rules @redis = redis @logger = logger end |
Instance Method Details
#check(identifier) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
22 23 24 25 26 27 28 29 |
# File 'lib/labkit/rate_limit/evaluator.rb', line 22 def check(identifier) check_rules(identifier) rescue StandardError => e # Intentionally broad: fail-open applies to any unexpected error (network, # timeout, OOM) not only Redis protocol errors. log_error(e, identifier) Result.new(matched: false, error: true) end |