Class: Canon::Config::OverrideResolver
- Inherits:
-
Object
- Object
- Canon::Config::OverrideResolver
- Defined in:
- lib/canon/config/override_resolver.rb
Overview
Resolves configuration values using priority chain Priority: ENV > programmatic > defaults
Instance Attribute Summary collapse
-
#defaults ⇒ Object
readonly
Returns the value of attribute defaults.
-
#env ⇒ Object
readonly
Returns the value of attribute env.
-
#programmatic ⇒ Object
readonly
Returns the value of attribute programmatic.
Instance Method Summary collapse
-
#env_set?(key) ⇒ Boolean
Check if value is set by ENV.
-
#initialize(defaults: {}, programmatic: {}, env: {}) ⇒ OverrideResolver
constructor
A new instance of OverrideResolver.
-
#programmatic_set?(key) ⇒ Boolean
Check if value is set programmatically.
-
#resolve(key) ⇒ Object
Resolve a single value using priority chain Uses .key? to properly handle false values.
-
#set_env(key, value) ⇒ Object
Update ENV override.
-
#set_programmatic(key, value) ⇒ Object
Update programmatic value.
-
#source_for(key) ⇒ Object
Get the source of a value.
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
#defaults ⇒ Object (readonly)
Returns the value of attribute defaults.
8 9 10 |
# File 'lib/canon/config/override_resolver.rb', line 8 def defaults @defaults end |
#env ⇒ Object (readonly)
Returns the value of attribute env.
8 9 10 |
# File 'lib/canon/config/override_resolver.rb', line 8 def env @env end |
#programmatic ⇒ Object (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
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
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 |