Class: RailsErrorDashboard::Queries::ErrorCascades

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

Overview

Find cascade patterns for an error (what causes it, what it causes)

A cascade is when one error leads to another within a time window. This helps identify root causes vs symptoms.

Examples:

cascades = ErrorCascades.call(error_id: 123)
cascades[:parents]  # Errors that cause this one
cascades[:children] # Errors this one causes

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(error_id, min_probability: 0.5) ⇒ ErrorCascades

Returns a new instance of ErrorCascades.



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

def initialize(error_id, min_probability: 0.5)
  @error_id = error_id
  @min_probability = min_probability.to_f
end

Class Method Details

.call(error_id:, min_probability: 0.5) ⇒ Object



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

def self.call(error_id:, min_probability: 0.5)
  new(error_id, min_probability: min_probability).find_cascades
end

Instance Method Details

#find_cascadesObject



24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/rails_error_dashboard/queries/error_cascades.rb', line 24

def find_cascades
  return { parents: [], children: [] } unless defined?(CascadePattern)
  return { parents: [], children: [] } unless CascadePattern.table_exists?

  target_error = ErrorLog.find_by(id: @error_id)
  return { parents: [], children: [] } unless target_error

  {
    parents: find_parent_cascades,
    children: find_child_cascades
  }
end