ruby · @btsouth
Rails: request limiter
61.8WPM
61.97sComplete passage
- Accuracy
- 98.2%
- Raw speed
- 64.1WPM
- Mistakes
- 6
- Rule
- Correct every error
Passage and playback
def rate_limiting(to:, within:, by:, with:)
limiter = Kredis.limiter "rate-limit:#{controller_path}:#{instance_exec(&by)}", limit: to, expires_in: within
if limiter.exceeded?
ActiveSupport::Notifications.instrument("rate_limit.action_controller", request: request) do
instance_exec(&with)
end
else
limiter.poke
end
end
David Heinemeier Hansson. Rails (MIT). https://github.com/rails/rails/blob/179b979ddbb7bcc4d1a12d0d71779f47c1c9d9cd/actionpack/lib/action_controller/metal/rate_limiting.rb#L52-L62