Class: RailsErrorDashboard::Subscribers::RackAttackSubscriber
- Inherits:
-
Object
- Object
- RailsErrorDashboard::Subscribers::RackAttackSubscriber
- Defined in:
- lib/rails_error_dashboard/subscribers/rack_attack_subscriber.rb
Overview
Registers ActiveSupport::Notifications subscribers for Rack::Attack events.
Rack Attack (v5.0+) emits:
-
throttle.rack_attack — rate-limited requests
-
blocklist.rack_attack — blocked requests
-
track.rack_attack — tracked (observed) requests
Each event is captured as a breadcrumb with category “rack_attack”, allowing correlation between rate-limit events and error spikes.
SAFETY RULES (HOST_APP_SAFETY.md):
-
Every subscriber wrapped in rescue => e; nil
-
Never raise from subscriber callbacks
-
Skip if buffer is nil (not in a request context)
Constant Summary collapse
- EVENTS =
%w[ throttle.rack_attack blocklist.rack_attack track.rack_attack ].freeze
Class Attribute Summary collapse
-
.subscriptions ⇒ Object
readonly
Returns the value of attribute subscriptions.
Class Method Summary collapse
-
.subscribe! ⇒ Array
Register all Rack Attack event subscribers.
-
.unsubscribe! ⇒ Object
Remove all Rack Attack subscribers.
Class Attribute Details
.subscriptions ⇒ Object (readonly)
Returns the value of attribute subscriptions.
30 31 32 |
# File 'lib/rails_error_dashboard/subscribers/rack_attack_subscriber.rb', line 30 def subscriptions @subscriptions end |
Class Method Details
.subscribe! ⇒ Array
Register all Rack Attack event subscribers
34 35 36 37 38 39 40 41 42 |
# File 'lib/rails_error_dashboard/subscribers/rack_attack_subscriber.rb', line 34 def subscribe! @subscriptions = [] EVENTS.each do |event_name| @subscriptions << subscribe_event(event_name) end @subscriptions end |
.unsubscribe! ⇒ Object
Remove all Rack Attack subscribers
45 46 47 48 49 50 51 52 |
# File 'lib/rails_error_dashboard/subscribers/rack_attack_subscriber.rb', line 45 def unsubscribe! @subscriptions.each do |sub| ActiveSupport::Notifications.unsubscribe(sub) if sub rescue => e nil end @subscriptions = [] end |