Sha256: 3c9c7380eebca549e22ba5b399e8045b195c65774b6f6fbd7ba33a6fa85e3634

Contents?: true

Size: 1.45 KB

Versions: 20

Compression:

Stored size: 1.45 KB

Contents

# frozen_string_literal: true

## based off https://github.com/newrelic/rpm/blob/master/lib/new_relic/agent/instrumentation/active_record.rb
## fallback for alls sorts of weird dbs
module Rack
  class MiniProfiler
    module ActiveRecordInstrumentation
      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

      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
    end
  end

  def self.insert_instrumentation
    ActiveRecord::ConnectionAdapters::AbstractAdapter.module_eval do
      include ::Rack::MiniProfiler::ActiveRecordInstrumentation
    end
  end

  if defined?(::Rails)
    insert_instrumentation
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
rack-mini-profiler-3.3.1 lib/patches/db/activerecord.rb
rack-mini-profiler-3.3.0 lib/patches/db/activerecord.rb
rack-mini-profiler-3.2.1 lib/patches/db/activerecord.rb
rack-mini-profiler-3.2.0 lib/patches/db/activerecord.rb
rack-mini-profiler-3.1.1 lib/patches/db/activerecord.rb
rack-mini-profiler-3.1.0 lib/patches/db/activerecord.rb
rack-mini-profiler-3.0.0 lib/patches/db/activerecord.rb
rack-mini-profiler-2.3.4 lib/patches/db/activerecord.rb
rack-mini-profiler-2.3.3 lib/patches/db/activerecord.rb
rack-mini-profiler-2.3.2 lib/patches/db/activerecord.rb
rack-mini-profiler-2.3.1 lib/patches/db/activerecord.rb
rack-mini-profiler-2.3.0 lib/patches/db/activerecord.rb
rack-mini-profiler-2.2.1 lib/patches/db/activerecord.rb
rack-mini-profiler-2.2.0 lib/patches/db/activerecord.rb
rack-mini-profiler-2.1.0 lib/patches/db/activerecord.rb
rack-mini-profiler-2.0.4 lib/patches/db/activerecord.rb
rack-mini-profiler-2.0.3 lib/patches/db/activerecord.rb
rack-mini-profiler-2.0.2 lib/patches/db/activerecord.rb
rack-mini-profiler-2.0.1 lib/patches/db/activerecord.rb
rack-mini-profiler-2.0.0 lib/patches/db/activerecord.rb