Class: Variant::Environment
- Inherits:
-
Object
- Object
- Variant::Environment
- Extended by:
- Thread::Local
- Defined in:
- lib/variant/environment.rb
Instance Attribute Summary collapse
-
#overrides ⇒ Object
readonly
Returns the value of attribute overrides.
Instance Method Summary collapse
- #default_variant ⇒ Object
- #default_variant=(name) ⇒ Object
- #fetch(key, *arguments, &block) ⇒ Object
-
#initialize(overrides = {}, default: DEVELOPMENT) ⇒ Environment
constructor
It is not safe to modify ENV.
- #override_variant(name, value) ⇒ Object
- #to_hash ⇒ Object
- #variant_for(name, default = nil) ⇒ Object
- #variant_key(name) ⇒ Object
- #with(overrides) ⇒ Object
Constructor Details
#initialize(overrides = {}, default: DEVELOPMENT) ⇒ Environment
It is not safe to modify ENV.
35 36 37 |
# File 'lib/variant/environment.rb', line 35 def initialize(overrides = {}, default: DEVELOPMENT) @overrides = overrides end |
Instance Attribute Details
#overrides ⇒ Object (readonly)
Returns the value of attribute overrides.
39 40 41 |
# File 'lib/variant/environment.rb', line 39 def overrides @overrides end |
Instance Method Details
#default_variant ⇒ Object
60 61 62 |
# File 'lib/variant/environment.rb', line 60 def default_variant self.fetch('VARIANT', DEVELOPMENT).to_sym end |
#default_variant=(name) ⇒ Object
64 65 66 |
# File 'lib/variant/environment.rb', line 64 def default_variant= name @overrides['VARIANT'] = name end |
#fetch(key, *arguments, &block) ⇒ Object
54 55 56 57 58 |
# File 'lib/variant/environment.rb', line 54 def fetch(key, *arguments, &block) @overrides.fetch(key) do ENV.fetch(key, *arguments, &block) end end |
#override_variant(name, value) ⇒ Object
74 75 76 |
# File 'lib/variant/environment.rb', line 74 def override_variant(name, value) @overrides[variant_key(name)] = value end |
#to_hash ⇒ Object
50 51 52 |
# File 'lib/variant/environment.rb', line 50 def to_hash ENV.to_hash.update(@overrides) end |
#variant_for(name, default = nil) ⇒ Object
68 69 70 71 72 |
# File 'lib/variant/environment.rb', line 68 def variant_for(name, default = nil) self.fetch(variant_key(name)) do self.fetch('VARIANT', default) end&.to_sym end |
#variant_key(name) ⇒ Object
78 79 80 |
# File 'lib/variant/environment.rb', line 78 def variant_key(name) "#{name.upcase}_VARIANT" end |
#with(overrides) ⇒ Object
41 42 43 44 45 46 47 48 |
# File 'lib/variant/environment.rb', line 41 def with(overrides) old_overrides = @overrides @overrides = overrides yield self ensure @overrides = old_overrides end |