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
# 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.count COUNT_METRIC, 1, tags
  Metric.count SELECT_METRIC, 1, tags if sql.start_with?('SELECT')
  Metric.count INSERT_METRIC, 1, tags if sql.start_with?('INSERT')
  Metric.count UPDATE_METRIC, 1, tags if sql.start_with?('UPDATE')
  Metric.count DELETE_METRIC, 1, tags if sql.start_with?('DELETE')
end

.record_instantiations(event) ⇒ Object



29
30
31
32
33
34
# File 'lib/traxor/rails/active_record.rb', line 29

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