Sha256: 0b9ebf218513d10b43b17ae463669d9b72ea3e183da2e9da8b68ac95c45ea755

Contents?: true

Size: 2 KB

Versions: 16

Compression:

Stored size: 2 KB

Contents

require 'mini_profiler/timer_struct'

module Rack
  class MiniProfiler

    # Timing system for a SQL query
    class SqlTimerStruct < TimerStruct
      def initialize(query, duration_ms, page, parent, skip_backtrace = false, full_backtrace = false)

        stack_trace = nil 
        unless skip_backtrace 
          # Allow us to filter the stack trace
          stack_trace = ""
           # Clean up the stack trace if there are options to do so
          Kernel.caller.each do |ln|
            ln.gsub!(Rack::MiniProfiler.config.backtrace_remove, '') if Rack::MiniProfiler.config.backtrace_remove and !full_backtrace
            if    full_backtrace or 
                  (
                    (
                      Rack::MiniProfiler.config.backtrace_includes.nil? or 
                      Rack::MiniProfiler.config.backtrace_includes.all?{|regex| ln =~ regex}
                    ) and
                    (
                      Rack::MiniProfiler.config.backtrace_ignores.nil? or 
                      Rack::MiniProfiler.config.backtrace_ignores.all?{|regex| !(ln =~ regex)}
                    )
                  ) 
              stack_trace << ln << "\n" 
            end
          end
        end

        @parent = parent
        @page = page

        super("ExecuteType" => 3, # TODO
              "FormattedCommandString" => query,
              "StackTraceSnippet" => stack_trace, 
              "StartMilliseconds" => ((Time.now.to_f * 1000).to_i - page['Started']) - duration_ms,
              "DurationMilliseconds" => duration_ms,
              "FirstFetchDurationMilliseconds" => duration_ms,
              "Parameters" => nil,
              "ParentTimingId" => nil,
              "IsDuplicate" => false)
      end

      def report_reader_duration(elapsed_ms)
        return if @reported
        @reported = true
        self["DurationMilliseconds"] += elapsed_ms
        @parent["SqlTimingsDurationMilliseconds"] += elapsed_ms
        @page["DurationMillisecondsInSql"] += elapsed_ms
      end

    end

  end
end

Version data entries

16 entries across 16 versions & 2 rubygems

Version Path
mini-mini-profiler-0.1.1 Ruby/lib/mini_profiler/sql_timer_struct.rb
mini-mini-profiler-0.1 Ruby/lib/mini_profiler/sql_timer_struct.rb
rack-mini-profiler-0.1.26 Ruby/lib/mini_profiler/sql_timer_struct.rb
rack-mini-profiler-0.1.25 Ruby/lib/mini_profiler/sql_timer_struct.rb
rack-mini-profiler-0.1.24 Ruby/lib/mini_profiler/sql_timer_struct.rb
rack-mini-profiler-0.1.23 Ruby/lib/mini_profiler/sql_timer_struct.rb
rack-mini-profiler-0.1.22 Ruby/lib/mini_profiler/sql_timer_struct.rb
rack-mini-profiler-0.1.21 lib/mini_profiler/sql_timer_struct.rb
rack-mini-profiler-0.1.20 lib/mini_profiler/sql_timer_struct.rb
rack-mini-profiler-0.1.19 lib/mini_profiler/sql_timer_struct.rb
rack-mini-profiler-0.1.18 lib/mini_profiler/sql_timer_struct.rb
rack-mini-profiler-0.1.17 lib/mini_profiler/sql_timer_struct.rb
rack-mini-profiler-0.1.16 lib/mini_profiler/sql_timer_struct.rb
rack-mini-profiler-0.1.15.pre lib/mini_profiler/sql_timer_struct.rb
rack-mini-profiler-0.1.14.pre lib/mini_profiler/sql_timer_struct.rb
rack-mini-profiler-0.1.13.pre lib/mini_profiler/sql_timer_struct.rb