Module: ScoutApm::Instruments::ActiveRecordFinderMethodsInstruments

Defined in:
lib/scout_apm/instruments/active_record.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(instrumented_class) ⇒ Object



342
343
344
345
346
347
348
349
350
# File 'lib/scout_apm/instruments/active_record.rb', line 342

def self.included(instrumented_class)
  ScoutApm::Agent.instance.context.logger.info "Instrumenting ActiveRecord::FinderMethods - #{instrumented_class.inspect}"
  instrumented_class.class_eval do
    unless instrumented_class.method_defined?(:find_with_associations_without_scout_instruments)
      alias_method :find_with_associations_without_scout_instruments, :find_with_associations
      alias_method :find_with_associations, :find_with_associations_with_scout_instruments
    end
  end
end

Instance Method Details

#find_with_associations_with_scout_instruments(*args, &block) ⇒ Object



352
353
354
355
356
357
358
359
360
361
362
363
364
365
# File 'lib/scout_apm/instruments/active_record.rb', line 352

def find_with_associations_with_scout_instruments(*args, &block)
  req = ScoutApm::RequestManager.lookup
  layer = ScoutApm::Layer.new("ActiveRecord", Utils::ActiveRecordMetricName::DEFAULT_METRIC)
  layer.annotate_layer(:ignorable => true)
  layer.desc = SqlList.new
  req.start_layer(layer)
  req.ignore_children!
  begin
    find_with_associations_without_scout_instruments(*args, &block)
  ensure
    req.acknowledge_children!
    req.stop_layer
  end
end