Sha256: 3a063d050bc2dab97d72643a30c6df49185485936ddc15a7cace75ea5a15a8dd
Contents?: true
Size: 1.66 KB
Versions: 1
Compression:
Stored size: 1.66 KB
Contents
require 'yaml' module Prefab class ConfigLoader def initialize(base_client) @base_client = base_client @classpath_config = load_classpath_config @local_overrides = load_local_overrides @api_config = Concurrent::Map.new end def calc_config rtn = @classpath_config.clone @api_config.each_key do |k| rtn[k] = @api_config[k].value end rtn = rtn.merge(@local_overrides) rtn end def set(delta) @api_config[delta.key] = delta end def get_api_deltas deltas = Prefab::ConfigDeltas.new @api_config.each_value do |config_value| deltas.deltas << config_value end deltas end private def load_classpath_config classpath_dir = ENV['PREFAB_CONFIG_CLASSPATH_DIR'] || "" load_glob(File.join(classpath_dir, ".prefab*config.yaml")) end def load_local_overrides override_dir = ENV['PREFAB_CONFIG_OVERRIDE_DIR'] || Dir.home load_glob(File.join(override_dir, ".prefab*config.yaml")) end def load_glob(glob) rtn = {} Dir.glob(glob).each do |file| yaml = load(file) yaml.each do |k, v| rtn[k] = Prefab::ConfigValue.new(value_from(v)) end end rtn end def load(filename) if File.exist? filename YAML.load_file(filename) else @base_client.logger.info "No file #{filename}" {} end end def value_from(raw) case raw when String {string: raw} when Integer {int: raw} when TrueClass, FalseClass {bool: raw} when Float {double: raw} end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
prefab-cloud-ruby-0.0.10 | lib/prefab/config_loader.rb |