Module: Traxor::Rails::ActiveRecord

Defined in:
lib/traxor/rails/active_record.rb

Constant Summary collapse

COUNT_METRIC =
'rails.active_record.statements.count'
SELECT_METRIC =
'rails.active_record.statements.select.count'
INSERT_METRIC =
'rails.active_record.statements.insert.count'
UPDATE_METRIC =
'rails.active_record.statements.update.count'
DELETE_METRIC =
'rails.active_record.statements.delete.count'
INSTANTIATION_METRIC =
'rails.active_record.instantiation.count'

Class Method Summary collapse

Class Method Details

.record(event) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/traxor/rails/active_record.rb', line 15

def self.record(event)
  sql = event.payload[:sql].to_s.strip.upcase
  name = event.payload[:name].to_s.strip
  return if name.casecmp('SCHEMA').zero?

  tags = {}
  tags[:active_record_class_name] = name.split.first if name.length.positive?

  Metric::Line.record do |l|
    l.count COUNT_METRIC, 1, tags
    l.count SELECT_METRIC, 1, tags if sql.start_with?('SELECT')
    l.count INSERT_METRIC, 1, tags if sql.start_with?('INSERT')
    l.count UPDATE_METRIC, 1, tags if sql.start_with?('UPDATE')
    l.count DELETE_METRIC, 1, tags if sql.start_with?('DELETE')
  end
end

.record_instantiations(event) ⇒ Object



32
33
34
35
36
37
# File 'lib/traxor/rails/active_record.rb', line 32

def self.record_instantiations(event)
  record_count = event.payload[:record_count].to_i
  tags = { active_record_class_name: event.payload[:class_name] }

  Metric.count INSTANTIATION_METRIC, record_count, tags if record_count.positive?
end