Class: ENVied::EnvProxy

Inherits:
Object
  • Object
show all
Defined in:
lib/envied/env_proxy.rb

Overview

Responsible for anything related to the ENV.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config, options = {}) ⇒ EnvProxy

Returns a new instance of EnvProxy.



6
7
8
9
10
# File 'lib/envied/env_proxy.rb', line 6

def initialize(config, options = {})
  @config = config
  @coercer = options.fetch(:coercer, ENVied::Coercer.new)
  @groups = options.fetch(:groups, [])
end

Instance Attribute Details

#coercerObject (readonly)

Returns the value of attribute coercer.



4
5
6
# File 'lib/envied/env_proxy.rb', line 4

def coercer
  @coercer
end

#configObject (readonly)

Returns the value of attribute config.



4
5
6
# File 'lib/envied/env_proxy.rb', line 4

def config
  @config
end

#groupsObject (readonly)

Returns the value of attribute groups.



4
5
6
# File 'lib/envied/env_proxy.rb', line 4

def groups
  @groups
end

Instance Method Details

#[](name) ⇒ Object



30
31
32
# File 'lib/envied/env_proxy.rb', line 30

def [](name)
  coerce(variables_by_name[name.to_sym])
end

#coerce(var) ⇒ Object



51
52
53
54
55
# File 'lib/envied/env_proxy.rb', line 51

def coerce(var)
  coerced?(var) ?
    value_to_coerce(var) :
    coercer.coerce(value_to_coerce(var), var.type)
end

#coerced?(var) ⇒ Boolean

Returns:

  • (Boolean)


65
66
67
# File 'lib/envied/env_proxy.rb', line 65

def coerced?(var)
  coercer.coerced?(value_to_coerce(var))
end

#coercible?(var) ⇒ Boolean

Returns:

  • (Boolean)


57
58
59
# File 'lib/envied/env_proxy.rb', line 57

def coercible?(var)
  coercer.coercible?(value_to_coerce(var), var.type)
end

#default_value_of(var) ⇒ Object



42
43
44
# File 'lib/envied/env_proxy.rb', line 42

def default_value_of(var)
  var.default_value(ENVied, var)
end

#env_value_of(var) ⇒ Object



38
39
40
# File 'lib/envied/env_proxy.rb', line 38

def env_value_of(var)
  ENV[var.name.to_s]
end

#has_key?(name) ⇒ Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/envied/env_proxy.rb', line 34

def has_key?(name)
  variables_by_name[name.to_sym]
end

#missing?(var) ⇒ Boolean

Returns:

  • (Boolean)


61
62
63
# File 'lib/envied/env_proxy.rb', line 61

def missing?(var)
  value_to_coerce(var).nil?
end

#missing_variablesObject



12
13
14
# File 'lib/envied/env_proxy.rb', line 12

def missing_variables
  variables.select(&method(:missing?))
end

#uncoercible_variablesObject



16
17
18
# File 'lib/envied/env_proxy.rb', line 16

def uncoercible_variables
  variables.reject(&method(:coerced?)).reject(&method(:coercible?))
end

#value_to_coerce(var) ⇒ Object



46
47
48
49
# File 'lib/envied/env_proxy.rb', line 46

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

#variablesObject



20
21
22
23
24
# File 'lib/envied/env_proxy.rb', line 20

def variables
  @variables ||= begin
    config.variables.select {|v| groups.include?(v.group) }
  end
end

#variables_by_nameObject



26
27
28
# File 'lib/envied/env_proxy.rb', line 26

def variables_by_name
  Hash[variables.map {|v| [v.name, v] }]
end