Module: Datadog::Tracing::Contrib::Configurable::InstanceMethods

Defined in:
lib/datadog/tracing/contrib/configurable.rb

Overview

Configurable instance behavior for integrations

Instance Method Summary collapse

Instance Method Details

#configuration(matcher = :default) ⇒ Object

Get matching configuration by matcher. If no match, returns the default configuration instance.



23
24
25
26
27
# File 'lib/datadog/tracing/contrib/configurable.rb', line 23

def configuration(matcher = :default)
  return default_configuration if matcher == :default

  resolver.get(matcher) || default_configuration
end

#configurations ⇒ Object

Returns all registered matchers and their respective configurations.



38
39
40
# File 'lib/datadog/tracing/contrib/configurable.rb', line 38

def configurations
  resolver.configurations.merge(default: default_configuration)
end

#configure(matcher = :default, options = {}, &block) ⇒ Object

Create or update configuration associated with matcher with the provided options and &block.



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/datadog/tracing/contrib/configurable.rb', line 44

def configure(matcher = :default, options = {}, &block)
  config = if matcher == :default
    default_configuration
  else
    resolver.get(matcher) || begin
      new_config = new_configuration
      set_integration_settings_path!(new_config)
      resolver.add(matcher, new_config)
    end
  end

  # Apply the settings
  config&.configure(options, &block)
  config
end

#default_configuration ⇒ Datadog::Tracing::Contrib::Configuration::Settings

Returns the integration-specific configuration object.

If one does not exist, invoke #new_configuration a memoize its value.

Returns:



72
73
74
75
76
77
78
# File 'lib/datadog/tracing/contrib/configurable.rb', line 72

def default_configuration
  @default_configuration ||= begin
    configuration = new_configuration
    set_integration_settings_path!(configuration)
    configuration
  end
end

#reset_configuration! ⇒ Object

Resets all configuration options



61
62
63
64
# File 'lib/datadog/tracing/contrib/configurable.rb', line 61

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

#resolve(value) ⇒ Object

Resolves the matching configuration for integration-specific value. If no match, returns the default configuration instance.



31
32
33
34
35
# File 'lib/datadog/tracing/contrib/configurable.rb', line 31

def resolve(value)
  return default_configuration if value == :default

  resolver.resolve(value) || default_configuration
end