class Conflate::Conflation

Attributes

config_object[RW]
yaml_path[RW]

Public Class Methods

new(yaml_path, config_object) click to toggle source

Public: Initialize a new Conflation

yaml_path - Path to the YAML file to read config information from config_object - Object to receive the configuration values (e.g., Rails.application.config)

# File lib/conflate/conflation.rb, line 13
def initialize(yaml_path, config_object)
  self.yaml_path = yaml_path
  self.config_object = config_object
end

Public Instance Methods

apply() click to toggle source

Public: Add the contents of the YAML file to the config object

# File lib/conflate/conflation.rb, line 19
def apply
  if config_object.respond_to?(name) && !config_object.public_send(name).nil?
    # doing this to properly handle the slightly different behaviors of
    # OpenStruct (which does respond to unassigned attributes) or the
    # Rails.application.config object (which doesn't)
    warn "#{config_object.class} already has a #{config_object.public_send(name).class} for the key '#{name}'. Skipping conflating it with the contents of #{File.basename yaml_path}."
    return # so don't set it
  end

  config_object.public_send "#{name}=", data
end
name() click to toggle source

Public: The name of the conflation, based on the YAML file name

Returns a String

# File lib/conflate/conflation.rb, line 34
def name
  File.basename(yaml_path, ".yml")
end

Private Instance Methods

data() click to toggle source

Private: The parsed data from the YAML file

# File lib/conflate/conflation.rb, line 39
def data
  YAML.load ERB.new(File.read File.expand_path yaml_path).result
rescue StandardError, SyntaxError => e
  {}
end