Class: Mnemosyne::Probes::ActiveRecord::Query::Probe

Inherits:
Mnemosyne::Probe show all
Defined in:
lib/mnemosyne/probes/active_record/query.rb

Instance Method Summary collapse

Methods inherited from Mnemosyne::Probe

#install, #setup, subscribe, subscriptions

Methods included from Logging

#logger

Instance Method Details

#call(trace, _name, start, finish, _id, payload) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/mnemosyne/probes/active_record/query.rb', line 10

def call(trace, _name, start, finish, _id, payload)
  return if payload[:name] == 'SCHEMA' || payload[:name] == 'CACHE'

  start  = ::Mnemosyne::Clock.to_tick(start)
  finish = ::Mnemosyne::Clock.to_tick(finish)

  meta = {
    sql: payload[:sql],
    binds: extract_bind_values(payload)
  }

  span = ::Mnemosyne::Span.new(
    'db.query.active_record',
    start:,
    finish:,
    meta:
  )

  trace << span
end

#extract_bind_values(payload) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/mnemosyne/probes/active_record/query.rb', line 31

def extract_bind_values(payload)
  return if payload[:binds].empty?

  payload[:binds].map do |bind|
    if bind.is_a?(Array)
      bind[0].type_cast_for_database(bind[1])
    else
      bind.value_for_database
    end
  end
rescue StandardError
  []
end