Sha256: 882620fe13aabee7a2f521796badcfae362d4046bedfc63dd20b7eaeb30f8042

Contents?: true

Size: 1.51 KB

Versions: 3

Compression:

Stored size: 1.51 KB

Contents

require 'ddtrace'

module Datadog
  module Contrib
    # Extensions for auto instrumentation added to the base library
    # AutoInstrumentation enables all integration
    module AutoInstrument
      def self.extended(base)
        base.send(:extend, Patch)
      end

      # Patch adds method for invoking auto_instrumentation
      module Patch
        def add_auto_instrument
          super

          if Datadog::Contrib::Rails::Utils.railtie_supported?
            require 'ddtrace/contrib/rails/auto_instrument_railtie'
          else
            AutoInstrument.patch_all
          end
          AutoInstrument.patch_all
        end
      end

      def self.patch_all
        integrations = []

        Datadog.registry.each do |integration|
          # some instrumentations are automatically enabled when the `rails` instrumentation is enabled,
          # patching them on their own automatically outside of the rails integration context would
          # cause undesirable service naming, so we exclude them based their auto_instrument? setting.
          # we also don't want to mix rspec/cucumber integration in as rspec is env we run tests in.
          next unless integration.klass.auto_instrument?

          integrations << integration.name
        end

        Datadog.configure do |c|
          c.reduce_log_verbosity
          # This will activate auto-instrumentation for Rails
          integrations.each do |integration_name|
            c.use integration_name
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
ddtrace-0.48.0 lib/ddtrace/contrib/auto_instrument.rb
ddtrace-0.47.0 lib/ddtrace/contrib/auto_instrument.rb
ddtrace-0.46.0 lib/ddtrace/contrib/auto_instrument.rb