Module: AppPerfRpm::Instruments::ActiveRecordImport

Includes:
Utils
Defined in:
lib/app_perf_rpm/instruments/activerecord_import.rb

Instance Method Summary collapse

Methods included from Utils

#sanitize_sql

Instance Method Details

#insert_many_with_trace(sql, values, *args) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/app_perf_rpm/instruments/activerecord_import.rb', line 6

def insert_many_with_trace( sql, values, *args )
  if ::AppPerfRpm::Tracer.tracing?
    sql_copy = sql.dup
    base_sql, post_sql = if sql_copy.dup.is_a?( String )
      [sql_copy, '']
    elsif sql.is_a?( Array )
      [sql_copy.shift, sql_copy.join( ' ' )]
    end

    adapter = ::ActiveRecord::Base.connection_config[:adapter]

    sanitized_sql = sanitize_sql(base_sql + values.join( ',' ) + post_sql, adapter)

    AppPerfRpm::Tracer.trace('activerecord') do |span|
      span.options = {
        "adapter" => adapter,
        "query" => sanitized_sql,
        "name" => self.class.name
      }

      insert_many_without_trace(sql, values, *args)
    end
  else
    insert_many_without_trace(sql, values, *args)
  end
end