Class: Variant::Environment

Inherits:
Object
  • Object
show all
Extended by:
Thread::Local
Defined in:
lib/variant/environment.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#overridesObject (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_variantObject



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_hashObject



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