Class: RailsErrorDashboard::Queries::RackAttackSummary

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_error_dashboard/queries/rack_attack_summary.rb

Overview

Query: Aggregate Rack Attack events from the rack_attack_events table.

Previously this scanned every error_log's breadcrumbs JSON in Ruby, which was both expensive (full-table scan + JSON.parse per row) and incomplete (events were only stored when an unrelated error happened to occur in the same request). Events now have their own table, so this is indexed SQL.

Returns rows grouped by rule with counts, unique discriminators (IPs), the most frequent path, and last-seen timestamps.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(days = 30, application_id: nil) ⇒ RackAttackSummary

Returns a new instance of RackAttackSummary.



19
20
21
22
23
# File 'lib/rails_error_dashboard/queries/rack_attack_summary.rb', line 19

def initialize(days = 30, application_id: nil)
  @days = days
  @application_id = application_id
  @start_date = days.days.ago
end

Class Method Details

.call(days = 30, application_id: nil) ⇒ Object



15
16
17
# File 'lib/rails_error_dashboard/queries/rack_attack_summary.rb', line 15

def self.call(days = 30, application_id: nil)
  new(days, application_id: application_id).call
end

Instance Method Details

#callObject



25
26
27
28
29
# File 'lib/rails_error_dashboard/queries/rack_attack_summary.rb', line 25

def call
  {
    events: aggregated_events
  }
end