class Mnemosyne::Probes::ActiveRecord::Query::Probe

Public Instance Methods

call(trace, _name, start, finish, _id, payload) click to toggle source
# 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: start, finish: finish, meta: meta

  trace << span
end
extract_bind_values(payload) click to toggle source
# File lib/mnemosyne/probes/active_record/query.rb, line 27
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