Class: Canon::Config::OverrideResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/canon/config/override_resolver.rb

Overview

Resolves configuration values using priority chain Priority: ENV > programmatic > defaults

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(defaults: {}, programmatic: {}, env: {}) ⇒ OverrideResolver

Returns a new instance of OverrideResolver.



10
11
12
13
14
# File 'lib/canon/config/override_resolver.rb', line 10

def initialize(defaults: {}, programmatic: {}, env: {})
  @defaults = defaults
  @programmatic = programmatic
  @env = env
end

Instance Attribute Details

#defaultsObject (readonly)

Returns the value of attribute defaults.



8
9
10
# File 'lib/canon/config/override_resolver.rb', line 8

def defaults
  @defaults
end

#envObject (readonly)

Returns the value of attribute env.



8
9
10
# File 'lib/canon/config/override_resolver.rb', line 8

def env
  @env
end

#programmaticObject (readonly)

Returns the value of attribute programmatic.



8
9
10
# File 'lib/canon/config/override_resolver.rb', line 8

def programmatic
  @programmatic
end

Instance Method Details

#env_set?(key) ⇒ Boolean

Check if value is set by ENV

Returns:

  • (Boolean)


36
37
38
# File 'lib/canon/config/override_resolver.rb', line 36

def env_set?(key)
  @env.key?(key)
end

#programmatic_set?(key) ⇒ Boolean

Check if value is set programmatically

Returns:

  • (Boolean)


41
42
43
# File 'lib/canon/config/override_resolver.rb', line 41

def programmatic_set?(key)
  @programmatic.key?(key)
end

#resolve(key) ⇒ Object

Resolve a single value using priority chain Uses .key? to properly handle false values



18
19
20
21
22
23
# File 'lib/canon/config/override_resolver.rb', line 18

def resolve(key)
  return @env[key] if @env.key?(key)
  return @programmatic[key] if @programmatic.key?(key)

  @defaults[key]
end

#set_env(key, value) ⇒ Object

Update ENV override



31
32
33
# File 'lib/canon/config/override_resolver.rb', line 31

def set_env(key, value)
  @env[key] = value
end

#set_programmatic(key, value) ⇒ Object

Update programmatic value



26
27
28
# File 'lib/canon/config/override_resolver.rb', line 26

def set_programmatic(key, value)
  @programmatic[key] = value
end

#source_for(key) ⇒ Object

Get the source of a value



46
47
48
49
50
51
52
# File 'lib/canon/config/override_resolver.rb', line 46

def source_for(key)
  return :env if @env.key?(key)
  return :programmatic if @programmatic.key?(key)
  return :default if @defaults.key?(key)

  nil
end