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