class TypedConfig::Setup
Attributes
loader[R]
Public Class Methods
new(loader: Loader.new)
click to toggle source
# File lib/typed_config/setup.rb, line 13 def initialize(loader: Loader.new) @loader = loader end
Public Instance Methods
call(config_path:, env: T.cast(ENV['RACK_ENV'], String))
click to toggle source
# File lib/typed_config/setup.rb, line 18 def call(config_path:, env: T.cast(ENV['RACK_ENV'], String)) config_file = "#{config_path}/config.rb" return unless File.file?(config_file) require_relative config_file settings = build_settings(config_path: config_path, env: env) definition = TypeCoerce[Structs::Settings].new.from(settings) Object.const_set(Schema.schema_const_name, definition) end
Private Instance Methods
build_settings(config_path:, env:)
click to toggle source
# File lib/typed_config/setup.rb, line 38 def build_settings(config_path:, env:) merge_settings([ loader.load("#{config_path}/settings.yml"), loader.load("#{config_path}/settings/#{env}.yml"), loader.load("#{config_path}/settings.local.yml"), loader.load("#{config_path}/settings/#{env}.local.yml"), ]) end
merge_settings(values)
click to toggle source
# File lib/typed_config/setup.rb, line 51 def merge_settings(values) values.inject({}) { |prev, curr| prev.deep_merge(curr) } end