Class: Trainspotter::Request

Inherits:
Object
  • Object
show all
Defined in:
app/models/trainspotter/request.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(id: nil) ⇒ Request

Returns a new instance of Request.



6
7
8
9
10
# File 'app/models/trainspotter/request.rb', line 6

def initialize(id: nil)
  @id = id || SecureRandom.hex(8)
  @entries = []
  @completed = false
end

Instance Attribute Details

#completedObject

Returns the value of attribute completed.



4
5
6
# File 'app/models/trainspotter/request.rb', line 4

def completed
  @completed
end

#entriesObject (readonly)

Returns the value of attribute entries.



3
4
5
# File 'app/models/trainspotter/request.rb', line 3

def entries
  @entries
end

#idObject (readonly)

Returns the value of attribute id.



3
4
5
# File 'app/models/trainspotter/request.rb', line 3

def id
  @id
end

Instance Method Details

#<<(entry) ⇒ Object



12
13
14
# File 'app/models/trainspotter/request.rb', line 12

def <<(entry)
  @entries << entry
end

#actionObject



36
37
38
# File 'app/models/trainspotter/request.rb', line 36

def action
  processing_entry&.&.dig(:action)
end

#completed?Boolean

Returns:

  • (Boolean)


16
17
18
# File 'app/models/trainspotter/request.rb', line 16

def completed?
  @completed
end

#controllerObject



32
33
34
# File 'app/models/trainspotter/request.rb', line 32

def controller
  processing_entry&.&.dig(:controller)
end

#duration_msObject



48
49
50
# File 'app/models/trainspotter/request.rb', line 48

def duration_ms
  end_entry&.&.dig(:duration_ms)
end

#ipObject



28
29
30
# File 'app/models/trainspotter/request.rb', line 28

def ip
  start_entry&.&.dig(:ip)
end

#methodObject



20
21
22
# File 'app/models/trainspotter/request.rb', line 20

def method
  start_entry&.&.dig(:method) || "?"
end

#paramsObject



40
41
42
# File 'app/models/trainspotter/request.rb', line 40

def params
  params_entry&.&.dig(:params)
end

#pathObject



24
25
26
# File 'app/models/trainspotter/request.rb', line 24

def path
  start_entry&.&.dig(:path) || "?"
end

#render_countObject



72
73
74
# File 'app/models/trainspotter/request.rb', line 72

def render_count
  render_entries.size
end

#render_duration_msObject



76
77
78
# File 'app/models/trainspotter/request.rb', line 76

def render_duration_ms
  render_entries.sum { |e| e.duration_ms || 0 }
end

#render_entriesObject



60
61
62
# File 'app/models/trainspotter/request.rb', line 60

def render_entries
  @entries.select(&:render?)
end

#sql_countObject



64
65
66
# File 'app/models/trainspotter/request.rb', line 64

def sql_count
  sql_entries.size
end

#sql_duration_msObject



68
69
70
# File 'app/models/trainspotter/request.rb', line 68

def sql_duration_ms
  sql_entries.sum { |e| e.duration_ms || 0 }
end

#sql_entriesObject



56
57
58
# File 'app/models/trainspotter/request.rb', line 56

def sql_entries
  @entries.select(&:sql?)
end

#started_atObject



52
53
54
# File 'app/models/trainspotter/request.rb', line 52

def started_at
  start_entry&.timestamp
end

#statusObject



44
45
46
# File 'app/models/trainspotter/request.rb', line 44

def status
  end_entry&.&.dig(:status)
end

#status_classObject



80
81
82
83
84
85
86
87
88
# File 'app/models/trainspotter/request.rb', line 80

def status_class
  case status
  when 200..299 then "success"
  when 300..399 then "redirect"
  when 400..499 then "client-error"
  when 500..599 then "server-error"
  else "unknown"
  end
end