module Rack::MiniProfiler::ActiveRecordInstrumentation

Public Class Methods

included(instrumented_class) click to toggle source
# File lib/patches/db/activerecord.rb, line 8
def self.included(instrumented_class)
  instrumented_class.class_eval do
    unless instrumented_class.method_defined?(:log_without_miniprofiler)
      alias_method :log_without_miniprofiler, :log
      alias_method :log, :log_with_miniprofiler
      protected :log
    end
  end
end

Public Instance Methods

log_with_miniprofiler(*args, &block) click to toggle source
# File lib/patches/db/activerecord.rb, line 18
def log_with_miniprofiler(*args, &block)
  return log_without_miniprofiler(*args, &block) unless SqlPatches.should_measure?

  sql, name, binds = args
  start            = Process.clock_gettime(Process::CLOCK_MONOTONIC)
  rval             = log_without_miniprofiler(*args, &block)

  # Don't log schema queries if the option is set
  return rval if Rack::MiniProfiler.config.skip_schema_queries && name =~ (/SCHEMA/)

  elapsed_time = SqlPatches.elapsed_time(start)
  Rack::MiniProfiler.record_sql(sql, elapsed_time, Rack::MiniProfiler.binds_to_params(binds))
  rval
end