Sha256: d0244a24b423975e564a670a977a0aafe2b069d5a31e6a7c075f68af49d06a93

Contents?: true

Size: 1.77 KB

Versions: 34

Compression:

Stored size: 1.77 KB

Contents

# frozen_string_literal: true

require_relative '../contrib'
require_relative 'extensions'

module Datadog
  module Tracing
    # Out-of-the-box instrumentation for tracing
    module Contrib
      # Auto-activate instrumentation
      def self.auto_instrument!
        require_relative 'rails/utils'

        # Defer to Rails if this is a Rails application
        if Datadog::Tracing::Contrib::Rails::Utils.railtie_supported?
          require_relative 'rails/auto_instrument_railtie'
        else
          AutoInstrument.patch_all!
        end
      end

      # Extensions for auto instrumentation added to the base library
      # AutoInstrumentation enables all integration
      module AutoInstrument
        def self.patch_all!
          integrations = []

          Contrib::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|
            # Ignore any instrumentation load errors (otherwise it might spam logs)
            c.tracing.ignore_integration_load_errors = true

            # Activate instrumentation for each integration
            integrations.each do |integration_name|
              c.tracing.instrument integration_name
            end
          end
        end
      end
    end
  end
end

Datadog::Tracing::Contrib.auto_instrument!

Version data entries

34 entries across 34 versions & 2 rubygems

Version Path
datadog-2.8.0 lib/datadog/tracing/contrib/auto_instrument.rb
datadog-2.7.1 lib/datadog/tracing/contrib/auto_instrument.rb
datadog-2.7.0 lib/datadog/tracing/contrib/auto_instrument.rb
datadog-2.6.0 lib/datadog/tracing/contrib/auto_instrument.rb
datadog-2.5.0 lib/datadog/tracing/contrib/auto_instrument.rb
datadog-2.4.0 lib/datadog/tracing/contrib/auto_instrument.rb
datadog-2.3.0 lib/datadog/tracing/contrib/auto_instrument.rb
datadog-2.2.0 lib/datadog/tracing/contrib/auto_instrument.rb
ddtrace-1.23.3 lib/datadog/tracing/contrib/auto_instrument.rb
ddtrace-1.23.2 lib/datadog/tracing/contrib/auto_instrument.rb
datadog-2.1.0 lib/datadog/tracing/contrib/auto_instrument.rb
datadog-2.0.0 lib/datadog/tracing/contrib/auto_instrument.rb
ddtrace-1.23.1 lib/datadog/tracing/contrib/auto_instrument.rb
datadog-2.0.0.beta2 lib/datadog/tracing/contrib/auto_instrument.rb
ddtrace-1.22.0 lib/datadog/tracing/contrib/auto_instrument.rb
datadog-2.0.0.beta1 lib/datadog/tracing/contrib/auto_instrument.rb
ddtrace-1.21.1 lib/datadog/tracing/contrib/auto_instrument.rb
ddtrace-1.21.0 lib/datadog/tracing/contrib/auto_instrument.rb
ddtrace-1.20.0 lib/datadog/tracing/contrib/auto_instrument.rb
ddtrace-1.19.0 lib/datadog/tracing/contrib/auto_instrument.rb