Module: RateLimitedService

Extended by:
ActiveSupport::Concern
Included in:
Issues::CreateService
Defined in:
app/services/concerns/rate_limited_service.rb

Defined Under Namespace

Classes: RateLimitedError, RateLimiterScopedAndKeyed

Constant Summary collapse

RateLimitedNotSetupError =
Class.new(StandardError)

Instance Method Summary collapse

Instance Method Details

#execute(*args, **kwargs) ⇒ Object



79
80
81
82
83
84
85
# File 'app/services/concerns/rate_limited_service.rb', line 79

def execute(*args, **kwargs)
  raise RateLimitedNotSetupError if rate_limiter_scoped_and_keyed.nil?

  rate_limiter_scoped_and_keyed.rate_limit!(self) unless rate_limiter_bypassed

  super
end

#execute_without_rate_limiting(*args, **kwargs) ⇒ Object



72
73
74
75
76
77
# File 'app/services/concerns/rate_limited_service.rb', line 72

def execute_without_rate_limiting(*args, **kwargs)
  self.rate_limiter_bypassed = true
  execute(*args, **kwargs)
ensure
  self.rate_limiter_bypassed = false
end