module Moneta::Config
Some docs here
Public Class Methods
included(base)
click to toggle source
# File lib/moneta/config.rb, line 63 def self.included(base) base.extend(ClassMethods) end
Public Instance Methods
config()
click to toggle source
# File lib/moneta/config.rb, line 58 def config raise "Not configured" unless defined?(@config) @config end
Protected Instance Methods
configure(**options)
click to toggle source
# File lib/moneta/config.rb, line 69 def configure(**options) raise 'Already configured' if defined?(@config) self.class.config_required_keys.each do |key| raise ArgumentError, "#{key} is required" unless options.key? key end defaults = self.class.config_defaults overrides, remainder = options .partition { |key,| defaults.key? key } .map { |pairs| pairs.to_h } self.class.config_coercions.each do |key, coerce| overrides[key] = coerce.call(overrides[key]) if overrides.key?(key) end overridden = defaults.merge!(overrides) config_blocks = self.class.config_blocks values = overridden.map do |key, value| if config_block = config_blocks[key] instance_exec(**overridden, &config_block) else value end end @config = self.class.config_struct&.new(*values).freeze remainder end