module Moneta::Config::ClassMethods
@api private
Public Instance Methods
config(name, coerce: nil, default: nil, required: false, &block)
click to toggle source
# File lib/moneta/config.rb, line 8 def config(name, coerce: nil, default: nil, required: false, &block) raise ArgumentError, 'name must be a symbol' unless Symbol === name defaults = config_defaults raise ArgumentError, "#{name} is already a config option" if defaults.key?(name) raise ArgumentError, "coerce must respond to :to_proc" if coerce && !coerce.respond_to?(:to_proc) defaults.merge!(name => default.freeze).freeze instance_variable_set :@config_defaults, defaults instance_variable_set :@config_coercions, config_coercions.merge!(name => coerce.to_proc) if coerce instance_variable_set :@config_required_keys, config_required_keys.add(name).freeze if required instance_variable_set :@config_blocks, config_blocks.merge!(name => block) if block end
config_blocks()
click to toggle source
# File lib/moneta/config.rb, line 44 def config_blocks config_variable(:@config_blocks) || {} end
config_coercions()
click to toggle source
# File lib/moneta/config.rb, line 40 def config_coercions config_variable(:@config_coercions) || {} end
config_defaults()
click to toggle source
# File lib/moneta/config.rb, line 32 def config_defaults config_variable(:@config_defaults) || {} end
config_required_keys()
click to toggle source
# File lib/moneta/config.rb, line 36 def config_required_keys config_variable(:@config_required_keys) || Set.new end
config_struct()
click to toggle source
# File lib/moneta/config.rb, line 48 def config_struct unless @config_struct keys = config_defaults.keys @config_struct = Struct.new(*keys) unless keys.empty? end @config_struct end
config_variable(name)
click to toggle source
# File lib/moneta/config.rb, line 24 def config_variable(name) if instance_variable_defined?(name) instance_variable_get(name).dup elsif superclass.respond_to?(:config_variable) superclass.config_variable(name) end end