Sha256: 51df047d8ec2459bd89c4793a376bf71bcad47f483ce5dead79f2033e9337aa7

Contents?: true

Size: 939 Bytes

Versions: 1

Compression:

Stored size: 939 Bytes

Contents

require_relative 'configuration/proxy'
require_relative 'configuration/resolver'

module Datadog
  # Configuration provides a unique access point for configurations
  class Configuration
    InvalidIntegrationError = Class.new(StandardError)

    def initialize(options = {})
      @registry = options.fetch(:registry, Datadog.registry)
    end

    def [](integration_name)
      integration = fetch_integration(integration_name)
      Proxy.new(integration)
    end

    def use(integration_name, options = {})
      integration = fetch_integration(integration_name)

      integration.sorted_options.each do |name|
        integration.set_option(name, options[name]) if options.key?(name)
      end

      integration.patch if integration.respond_to?(:patch)
    end

    private

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

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ddtrace-0.10.0 lib/ddtrace/configuration.rb