class Sysenv
Public Instance Methods
apply(hash, prefix=[])
click to toggle source
Override Project Specific Environment variables with system specific
Example:
>> sysenv = Sysenv.new >> sysenv.parse({api:{secret:{key: 'value',cert:'certificate'}}}) => {api:{secret:{key: 'value',cert:'certificate'}}}
Arguments:
apply: (Hash)
# File lib/sysenv/sysenv.rb, line 15 def apply(hash, prefix=[]) envs = {} # hash of { underscorized env keys : normal env keys } ENV.keys.collect { |e| envs[ActiveSupport::Inflector.underscore(e)] = e } override_nested_hash(hash, envs, prefix) end
override_nested_hash(hash, envs={}, prefix=[])
click to toggle source
# File lib/sysenv/sysenv.rb, line 21 def override_nested_hash(hash, envs={}, prefix=[]) hash.each do |key, value| if value.class == Hash hash[key] = override_nested_hash(value, envs, prefix.clone << key) end exp_key = (prefix.clone << key).join('_') index = envs.keys.index(exp_key) || envs.keys.index(exp_key.to_sym) hash[key] = ENV[envs.values[index]] if index end hash end