class ENVied::EnvProxy

Responsible for anything related to the ENV.

Attributes

coercer[R]
config[R]
groups[R]

Public Class Methods

new(config, **options) click to toggle source
# File lib/envied/env_proxy.rb, line 7
def initialize(config, **options)
  @config = config
  @coercer = options.fetch(:coercer, ENVied::Coercer.new)
  @groups = options.fetch(:groups, [])
end

Public Instance Methods

[](name) click to toggle source
# File lib/envied/env_proxy.rb, line 21
def [](name)
  coerce(variables_by_name[name.to_sym])
end
has_key?(name) click to toggle source
# File lib/envied/env_proxy.rb, line 25
def has_key?(name)
  variables_by_name[name.to_sym]
end
missing_variables() click to toggle source
# File lib/envied/env_proxy.rb, line 13
def missing_variables
  variables.select(&method(:missing?))
end
uncoercible_variables() click to toggle source
# File lib/envied/env_proxy.rb, line 17
def uncoercible_variables
  variables.reject(&method(:coerced?)).reject(&method(:coercible?))
end
value_to_coerce(var) click to toggle source
# File lib/envied/env_proxy.rb, line 29
def value_to_coerce(var)
  return env_value_of(var) unless env_value_of(var).nil?
  config.defaults_enabled? ? default_value_of(var) : nil
end

Private Instance Methods

coerce(var) click to toggle source
# File lib/envied/env_proxy.rb, line 36
def coerce(var)
  coerced?(var) ?
    value_to_coerce(var) :
    coercer.coerce(value_to_coerce(var), var.type)
end
coerced?(var) click to toggle source
# File lib/envied/env_proxy.rb, line 42
def coerced?(var)
  coercer.coerced?(value_to_coerce(var))
end
coercible?(var) click to toggle source
# File lib/envied/env_proxy.rb, line 46
def coercible?(var)
  coercer.coercible?(value_to_coerce(var), var.type)
end
default_value_of(var) click to toggle source
# File lib/envied/env_proxy.rb, line 50
def default_value_of(var)
  var.default_value(ENVied, var)
end
env_value_of(var) click to toggle source
# File lib/envied/env_proxy.rb, line 54
def env_value_of(var)
  ENV[var.name.to_s]
end
missing?(var) click to toggle source
# File lib/envied/env_proxy.rb, line 58
def missing?(var)
  value_to_coerce(var).nil?
end
variables() click to toggle source
# File lib/envied/env_proxy.rb, line 62
def variables
  @variables ||= config.variables.select {|v| groups.include?(v.group) }
end
variables_by_name() click to toggle source
# File lib/envied/env_proxy.rb, line 66
def variables_by_name
  @variables_by_name ||= variables.map {|v| [v.name, v] }.to_h
end