Module: Datadog::Contrib::Extensions::Configuration::Settings

Defined in:
lib/ddtrace/contrib/extensions.rb

Overview

Extensions for Datadog::Configuration::Settings

Constant Summary collapse

InvalidIntegrationError =
Class.new(StandardError)

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



44
45
46
47
48
49
# File 'lib/ddtrace/contrib/extensions.rb', line 44

def self.included(base)
  # Add the additional options to the global configuration settings
  base.instance_eval do
    option :registry, default: Registry.new
  end
end

Instance Method Details

#[](integration_name, configuration_name = :default) ⇒ Object



51
52
53
54
# File 'lib/ddtrace/contrib/extensions.rb', line 51

def [](integration_name, configuration_name = :default)
  integration = fetch_integration(integration_name)
  integration.configuration(configuration_name) unless integration.nil?
end

#fetch_integration(name) ⇒ Object



85
86
87
88
# File 'lib/ddtrace/contrib/extensions.rb', line 85

def fetch_integration(name)
  registry[name] ||
    raise(InvalidIntegrationError, "'#{name}' is not a valid integration.")
end

#instrument(integration_name, options = {}, &block) ⇒ Object Also known as: use



56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/ddtrace/contrib/extensions.rb', line 56

def instrument(integration_name, options = {}, &block)
  integration = fetch_integration(integration_name)

  unless integration.nil? || !integration.default_configuration.enabled
    configuration_name = options[:describes] || :default
    filtered_options = options.reject { |k, _v| k == :describes }
    integration.configure(configuration_name, filtered_options, &block)
    instrumented_integrations[integration_name] = integration

    # Add to activation list
    integrations_pending_activation << integration
  end
end

#instrumented_integrationsObject



76
77
78
# File 'lib/ddtrace/contrib/extensions.rb', line 76

def instrumented_integrations
  @instrumented_integrations ||= {}
end

#integrations_pending_activationObject



72
73
74
# File 'lib/ddtrace/contrib/extensions.rb', line 72

def integrations_pending_activation
  @integrations_pending_activation ||= Set.new
end

#reset!Object



80
81
82
83
# File 'lib/ddtrace/contrib/extensions.rb', line 80

def reset!
  instrumented_integrations.clear
  super
end