Class: RailsVitals::RequestRecord

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_vitals/request_record.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(collector:, scorer:) ⇒ RequestRecord

Returns a new instance of RequestRecord.



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/rails_vitals/request_record.rb', line 8

def initialize(collector:, scorer:)
  @id = SecureRandom.hex(8)
  @controller = collector.controller
  @action = collector.action
  @http_method = collector.http_method
  @response_status = collector.response_status
  @duration_ms = collector.duration_ms
  @queries = collector.queries
  @callbacks = collector.callbacks
  @total_callback_time_ms = collector.total_callback_time_ms
  @score = scorer.score
  @label = scorer.label
  @color = scorer.color
  @n_plus_one_patterns = build_n_plus_one_patterns(scorer)
  @recorded_at = Time.now
end

Instance Attribute Details

#actionObject (readonly)

Returns the value of attribute action.



3
4
5
# File 'lib/rails_vitals/request_record.rb', line 3

def action
  @action
end

#callbacksObject (readonly)

Returns the value of attribute callbacks.



3
4
5
# File 'lib/rails_vitals/request_record.rb', line 3

def callbacks
  @callbacks
end

#colorObject (readonly)

Returns the value of attribute color.



3
4
5
# File 'lib/rails_vitals/request_record.rb', line 3

def color
  @color
end

#controllerObject (readonly)

Returns the value of attribute controller.



3
4
5
# File 'lib/rails_vitals/request_record.rb', line 3

def controller
  @controller
end

#duration_msObject (readonly)

Returns the value of attribute duration_ms.



3
4
5
# File 'lib/rails_vitals/request_record.rb', line 3

def duration_ms
  @duration_ms
end

#http_methodObject (readonly)

Returns the value of attribute http_method.



3
4
5
# File 'lib/rails_vitals/request_record.rb', line 3

def http_method
  @http_method
end

#idObject (readonly)

Returns the value of attribute id.



3
4
5
# File 'lib/rails_vitals/request_record.rb', line 3

def id
  @id
end

#labelObject (readonly)

Returns the value of attribute label.



3
4
5
# File 'lib/rails_vitals/request_record.rb', line 3

def label
  @label
end

#n_plus_one_patternsObject (readonly)

Returns the value of attribute n_plus_one_patterns.



3
4
5
# File 'lib/rails_vitals/request_record.rb', line 3

def n_plus_one_patterns
  @n_plus_one_patterns
end

#queriesObject (readonly)

Returns the value of attribute queries.



3
4
5
# File 'lib/rails_vitals/request_record.rb', line 3

def queries
  @queries
end

#recorded_atObject (readonly)

Returns the value of attribute recorded_at.



3
4
5
# File 'lib/rails_vitals/request_record.rb', line 3

def recorded_at
  @recorded_at
end

#response_statusObject (readonly)

Returns the value of attribute response_status.



3
4
5
# File 'lib/rails_vitals/request_record.rb', line 3

def response_status
  @response_status
end

#scoreObject (readonly)

Returns the value of attribute score.



3
4
5
# File 'lib/rails_vitals/request_record.rb', line 3

def score
  @score
end

#total_callback_time_msObject (readonly)

Returns the value of attribute total_callback_time_ms.



3
4
5
# File 'lib/rails_vitals/request_record.rb', line 3

def total_callback_time_ms
  @total_callback_time_ms
end

Instance Method Details

#endpointObject



25
26
27
# File 'lib/rails_vitals/request_record.rb', line 25

def endpoint
  "#{@controller}##{@action}"
end

#slowest_queries(limit = 3) ⇒ Object



37
38
39
# File 'lib/rails_vitals/request_record.rb', line 37

def slowest_queries(limit = 3)
  @queries.sort_by { |q| -q[:duration_ms] }.first(limit)
end

#total_db_time_msObject



33
34
35
# File 'lib/rails_vitals/request_record.rb', line 33

def total_db_time_ms
  @queries.sum { |q| q[:duration_ms] }
end

#total_query_countObject



29
30
31
# File 'lib/rails_vitals/request_record.rb', line 29

def total_query_count
  @queries.size
end