class EbDeployer::ConfigLoader

Public Instance Methods

load(options) click to toggle source
# File lib/eb_deployer/config_loader.rb, line 21
def load(options)
  options = options.dup
  package_digest = package_digest(options[:package])
  config_file = options.delete(:config_file)

  env = options[:environment]
  config_settings = load_config_settings(config_file, package_digest, env)

  app_name = config_settings[:application]

  common_settings = symbolize_keys(config_settings[:common])
  common_settings[:version_label] ||= package_digest

  envs = config_settings[:environments]
  raise "Environment #{env} is not defined in #{config_file}" unless envs.has_key?(env)
  env_settings = symbolize_keys(envs[env] || {})
  env_option_settings = env_settings.delete(:option_settings) || []

  ret = options.merge(common_settings).merge(env_settings)
  ret[:application] = app_name
  ret[:option_settings] ||= []
  ret[:option_settings] += env_option_settings
  ret
end

Private Instance Methods

eval_binding(package_digest, env) click to toggle source
# File lib/eb_deployer/config_loader.rb, line 54
def eval_binding(package_digest, env)
  EvalBinding.new(package_digest, env).instance_eval { binding }
end
load_config_settings(config_file, package_digest, env) click to toggle source
# File lib/eb_deployer/config_loader.rb, line 48
def load_config_settings(config_file, package_digest, env)
  yaml = ERB.new(File.read(config_file)).
         result(eval_binding(package_digest, env))
  symbolize_keys(YAML.load(yaml))
end
package_digest(package) click to toggle source
# File lib/eb_deployer/config_loader.rb, line 58
def package_digest(package)
  return nil unless package
  return package unless File.exist?(package)
  Digest::MD5.file(package).hexdigest
end