Class: Labkit::RateLimit::Evaluator
- Inherits:
-
Object
- Object
- Labkit::RateLimit::Evaluator
- Defined in:
- lib/labkit/rate_limit/evaluator.rb
Overview
Evaluator contains the core rule-matching + Redis counter logic.
Constant Summary collapse
- KNOWN_CHARACTERISTICS =
[:user, :ip, :namespace, :plan, :endpoint].freeze
- KNOWN_ACTIONS =
[:block, :log].freeze
- REDIS_KEY_PREFIX =
"labkit:rl"- CHAR_VALUE_MAX_LENGTH =
200- UNKNOWN_SENTINEL =
"unknown_characteristic"- CALL_SITE_PATTERN =
/\A[a-z0-9_]+\z/
Instance Method Summary collapse
- #evaluate ⇒ Object
-
#initialize(call_site:, identifier:, rules:, redis:, logger: nil) ⇒ Evaluator
constructor
A new instance of Evaluator.
Constructor Details
#initialize(call_site:, identifier:, rules:, redis:, logger: nil) ⇒ Evaluator
Returns a new instance of Evaluator.
17 18 19 20 21 22 23 |
# File 'lib/labkit/rate_limit/evaluator.rb', line 17 def initialize(call_site:, identifier:, rules:, redis:, logger: nil) @call_site = call_site @identifier = identifier @rules = rules @redis = redis @logger = logger || build_default_logger end |
Instance Method Details
#evaluate ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/labkit/rate_limit/evaluator.rb', line 25 def evaluate validate_call_site! evaluate_rules rescue ArgumentError raise rescue StandardError => e # Intentionally broad: fail-open applies to any unexpected error (network, # timeout, OOM, etc.), not only Redis protocol errors. log_evaluate_error(e) :allow end |