Sha256: 6f75ff7097051c0142a61cda2bbb7c36263c701690d7884913cd2b5f187e8eb1

Contents?: true

Size: 1.48 KB

Versions: 31

Compression:

Stored size: 1.48 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(key = :default)
          configurations[resolve_configuration_key(key)]
        end

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

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

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

        protected

        attr_writer :resolver

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

        def resolve_configuration_key(key = :default)
          key = :default if key.nil?
          key = resolver.resolve(key)
          key = :default unless configurations.key?(key)
          key
        end
      end
    end
  end
end

Version data entries

31 entries across 31 versions & 2 rubygems

Version Path
ls-trace-0.1.2 lib/ddtrace/contrib/configurable.rb
ddtrace-0.32.0 lib/ddtrace/contrib/configurable.rb
ddtrace-0.31.1 lib/ddtrace/contrib/configurable.rb
ddtrace-0.31.0 lib/ddtrace/contrib/configurable.rb
ddtrace-0.30.1 lib/ddtrace/contrib/configurable.rb
ddtrace-0.30.0 lib/ddtrace/contrib/configurable.rb
ddtrace-0.29.1 lib/ddtrace/contrib/configurable.rb
ddtrace-0.26.1 lib/ddtrace/contrib/configurable.rb
ls-trace-0.1.1 lib/ddtrace/contrib/configurable.rb
ddtrace-0.29.0 lib/ddtrace/contrib/configurable.rb
ddtrace-0.28.0 lib/ddtrace/contrib/configurable.rb
ddtrace-0.27.0 lib/ddtrace/contrib/configurable.rb
ddtrace-0.26.0 lib/ddtrace/contrib/configurable.rb
ddtrace-0.25.1 lib/ddtrace/contrib/configurable.rb
ddtrace-0.25.0 lib/ddtrace/contrib/configurable.rb
ddtrace-0.24.0 lib/ddtrace/contrib/configurable.rb
ddtrace-0.23.3 lib/ddtrace/contrib/configurable.rb
ddtrace-0.23.2 lib/ddtrace/contrib/configurable.rb
ddtrace-0.23.1 lib/ddtrace/contrib/configurable.rb
ddtrace-0.23.0 lib/ddtrace/contrib/configurable.rb