Sha256: 82d5b0a07f3fc33ad0fb6576c2302971002ece602d96a15890e550ba17f3450e

Contents?: true

Size: 1.38 KB

Versions: 17

Compression:

Stored size: 1.38 KB

Contents

require 'ddtrace/contrib/configuration/resolver'
require 'ddtrace/contrib/configuration/settings'

module Datadog
  module Contrib
    # Defines configurable behavior for integrations
    module Configurable
      def self.included(base)
        base.send(:include, InstanceMethods)
      end

      # Configurable instance behavior for integrations
      module InstanceMethods
        def default_configuration
          Configuration::Settings.new
        end

        def reset_configuration!
          @configurations = nil
          @resolver = nil
        end

        def configuration(name = :default)
          name = :default if name.nil?
          name = resolver.resolve(name)
          return nil unless configurations.key?(name)
          configurations[name]
        end

        def configurations
          @configurations ||= Hash.new { default_configuration }.tap do |configs|
            configs[:default] = default_configuration
          end
        end

        def configure(name, options = {}, &block)
          name = resolver.resolve(name || :default)

          configurations[name].tap do |settings|
            settings.configure(options, &block)
            configurations[name] = settings
          end
        end

        protected

        attr_writer :resolver

        def resolver
          @resolver ||= Configuration::Resolver.new
        end
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
ddtrace-0.17.3 lib/ddtrace/contrib/configurable.rb
ddtrace-0.17.2 lib/ddtrace/contrib/configurable.rb
ddtrace-0.17.1 lib/ddtrace/contrib/configurable.rb
ddtrace-0.17.0 lib/ddtrace/contrib/configurable.rb
ddtrace-0.16.1 lib/ddtrace/contrib/configurable.rb
ddtrace-0.15.0.internaltracinfeature1 lib/ddtrace/contrib/configurable.rb
ddtrace-0.16.0 lib/ddtrace/contrib/configurable.rb
ddtrace-0.14.2.disableprotocolversion4 lib/ddtrace/contrib/configurable.rb
ddtrace-0.15.0 lib/ddtrace/contrib/configurable.rb
ddtrace-0.14.2.withoutpriorityparsing1 lib/ddtrace/contrib/configurable.rb
ddtrace-0.14.2 lib/ddtrace/contrib/configurable.rb
ddtrace-0.14.1 lib/ddtrace/contrib/configurable.rb
ddtrace-0.15.0.beta1 lib/ddtrace/contrib/configurable.rb
ddtrace-0.14.0 lib/ddtrace/contrib/configurable.rb
ddtrace-0.14.0.rc1 lib/ddtrace/contrib/configurable.rb
ddtrace-0.14.0.beta2 lib/ddtrace/contrib/configurable.rb
ddtrace-0.14.0.beta1 lib/ddtrace/contrib/configurable.rb