Class: Datadog::Contrib::ActiveRecord::Configuration::Resolver

Inherits:
Configuration::Resolver show all
Defined in:
lib/ddtrace/contrib/active_record/configuration/resolver.rb

Overview

Converts Symbols, Strings, and Hashes to a normalized connection settings Hash.

Instance Method Summary collapse

Methods inherited from Configuration::Resolver

#add

Constructor Details

#initialize(configurations = nil) ⇒ Resolver

Returns a new instance of Resolver.



10
11
12
# File 'lib/ddtrace/contrib/active_record/configuration/resolver.rb', line 10

def initialize(configurations = nil)
  @configurations = configurations
end

Instance Method Details

#configurationsObject



18
19
20
# File 'lib/ddtrace/contrib/active_record/configuration/resolver.rb', line 18

def configurations
  @configurations || ::ActiveRecord::Base.configurations
end

#connection_resolverObject



22
23
24
25
26
27
28
29
30
# File 'lib/ddtrace/contrib/active_record/configuration/resolver.rb', line 22

def connection_resolver
  @resolver ||= begin
    if defined?(::ActiveRecord::ConnectionAdapters::ConnectionSpecification::Resolver)
      ::ActiveRecord::ConnectionAdapters::ConnectionSpecification::Resolver.new(configurations)
    else
      ::Datadog::Vendor::ActiveRecord::ConnectionAdapters::ConnectionSpecification::Resolver.new(configurations)
    end
  end
end

#normalize(hash) ⇒ Object



32
33
34
35
36
37
38
39
40
# File 'lib/ddtrace/contrib/active_record/configuration/resolver.rb', line 32

def normalize(hash)
  {
    adapter:  hash[:adapter],
    host:     hash[:host],
    port:     hash[:port],
    database: hash[:database],
    username: hash[:username]
  }
end

#resolve(key) ⇒ Object



14
15
16
# File 'lib/ddtrace/contrib/active_record/configuration/resolver.rb', line 14

def resolve(key)
  normalize(connection_resolver.resolve(key).symbolize_keys)
end