Module: ActiveJob::Temporal::RateLimitOptions

Extended by:
ActiveSupport::Concern
Defined in:
lib/activejob/temporal/rate_limit_options.rb

Overview

Provides per-job rate limit metadata via the rate_limit class method.

Constant Summary collapse

PERIOD_SECONDS =
{
  second: 1.0,
  minute: 60.0,
  hour: 3600.0
}.freeze

Class Method Summary collapse

Class Method Details

.normalize(limit, per:, key: nil) ⇒ Object



19
20
21
22
23
24
25
# File 'lib/activejob/temporal/rate_limit_options.rb', line 19

def self.normalize(limit, per:, key: nil)
  normalized_limit = normalize_limit(limit)
  normalized_interval = normalize_interval(per)
  normalized = { limit: normalized_limit, interval: normalized_interval }
  normalized[:key] = normalize_key(key) if key
  normalized
end

.normalize_hash(value) ⇒ Object

Raises:

  • (ArgumentError)


27
28
29
30
31
32
33
34
35
36
# File 'lib/activejob/temporal/rate_limit_options.rb', line 27

def self.normalize_hash(value)
  raise ArgumentError, "rate limit must be a Hash" unless value.is_a?(Hash)

  limit = value[:limit] || value["limit"]
  interval = value[:interval] || value["interval"]
  per = value[:per] || value["per"] || interval
  key = value[:key] || value["key"]

  normalize(limit, per: per, key: key)
end