class PactBroker::Config::Load

Attributes

runtime_configuration[R]

Public Class Methods

call(runtime_configuration) click to toggle source
# File lib/pact_broker/config/load.rb, line 12
def self.call runtime_configuration
  new(runtime_configuration).call
end
new(runtime_configuration) click to toggle source
# File lib/pact_broker/config/load.rb, line 16
def initialize runtime_configuration
  @runtime_configuration = runtime_configuration
end

Public Instance Methods

call() click to toggle source
# File lib/pact_broker/config/load.rb, line 20
def call
  Setting.each do | setting |
    set_value_on_configuration setting
  end
end

Private Instance Methods

configuration_attribute_exists?(setting) click to toggle source
# File lib/pact_broker/config/load.rb, line 30
def configuration_attribute_exists? setting
  runtime_configuration.respond_to?("#{setting.name}=")
end
set_value_on_configuration(setting) click to toggle source
# File lib/pact_broker/config/load.rb, line 42
def set_value_on_configuration setting
  if configuration_attribute_exists?(setting)
    if unset_or_value_from_default?(setting)
      runtime_configuration.send("#{setting.name}=", setting.value_object)
    else
      logger.debug("Ignoring #{setting.name} configuration from database, as it has been set by another source #{setting_source(setting)}")
    end
  else
    logger.warn("Could not load configuration setting \"#{setting.name}\" as there is no matching attribute on the #{runtime_configuration.class} class")
  end
end
setting_source(setting) click to toggle source
# File lib/pact_broker/config/load.rb, line 38
def setting_source(setting)
  runtime_configuration.to_source_trace.dig(setting.name, :source)
end
unset_or_value_from_default?(setting) click to toggle source
# File lib/pact_broker/config/load.rb, line 34
def unset_or_value_from_default? setting
  setting_source(setting).nil? || setting_source(setting)[:type] == :defaults
end