Class: Smol::Config
Constant Summary
Constants included
from Coercion
Smol::Coercion::TRUTHY_VALUES
Instance Method Summary
collapse
Methods included from Coercion
#coerce_value
Constructor Details
#initialize ⇒ Config
Returns a new instance of Config.
7
8
9
10
|
# File 'lib/smol/config.rb', line 7
def initialize
@settings = {}
@values = {}
end
|
Instance Method Details
#[](key) ⇒ Object
16
17
18
19
20
21
22
23
24
25
26
|
# File 'lib/smol/config.rb', line 16
def [](key)
return @values[key] if @values.key?(key)
setting = @settings[key]
raise ArgumentError, "unknown config key: #{key}" unless setting
env_key = key.to_s.upcase
raw = ENV.fetch(env_key, setting[:default].to_s)
@values[key] = coerce_value(raw, setting[:type])
end
|
#each(&block) ⇒ Object
42
43
44
45
46
|
# File 'lib/smol/config.rb', line 42
def each(&block)
return enum_for(:each) unless block
@settings.each_key { |k| yield k, self[k], @settings[k] }
end
|
#set(key, value) ⇒ Object
28
29
30
31
32
|
# File 'lib/smol/config.rb', line 28
def set(key, value)
raise ArgumentError, "unknown config key: #{key}" unless @settings.key?(key)
@values[key] = coerce_value(value.to_s, @settings[key][:type])
end
|
#setting(key, default:, type: :string, desc: nil) ⇒ Object
12
13
14
|
# File 'lib/smol/config.rb', line 12
def setting(key, default:, type: :string, desc: nil)
@settings[key] = { default: default, type: type, desc: desc }
end
|
#settings ⇒ Object
34
35
36
|
# File 'lib/smol/config.rb', line 34
def settings
@settings.dup
end
|
#to_h ⇒ Object
38
39
40
|
# File 'lib/smol/config.rb', line 38
def to_h
@settings.keys.each_with_object({}) { |k, h| h[k] = self[k] }
end
|