class Configature::Config
Public Class Methods
config_dir()
click to toggle source
config_dir=(dir)
click to toggle source
# File lib/configature/config.rb, line 19 def self.config_dir=(dir) @config_dir = dir end
namespace(name, file: nil, env_suffix: '', extends: nil, &block)
click to toggle source
# File lib/configature/config.rb, line 23 def self.namespace(name, file: nil, env_suffix: '', extends: nil, &block) extends &&= self.namespaces[extends] namespace = self.namespaces[name] = Configature::Namespace.new(name, env_suffix: env_suffix, extends: extends).tap do |n| case (block&.arity) when nil nil when 1 block[n] else n.instance_eval(&block) end end file = (file || extends&.config_name || name).to_s if (file and !file.include?('.')) file += '.yml' end unless (self.respond_to?(name)) iv = :"@#{name}" singleton_class.send(:define_method, name) do instance_variable_get(iv) or instance_variable_set(iv, namespace.__instantiate( source: Configature::Support.yaml_if_exist(File.expand_path(file, self.config_dir)) )) end end end
namespaces()
click to toggle source
# File lib/configature/config.rb, line 54 def self.namespaces @namespaces ||= { } end
new(config_dir: nil, path: nil, env: ENV, data: nil)
click to toggle source
Instance Methods =====================================================¶ ↑
Calls superclass method
# File lib/configature/config.rb, line 60 def initialize(config_dir: nil, path: nil, env: ENV, data: nil) super( self.class.namespaces.map do |name, namespace| config = data || begin path ||= File.expand_path('%s.yml' % namespace.config_name, config_dir || self.class.config_dir) Configature::Support.yaml_if_exist(path) end [ name, Configature::Support.convert_hashes( Configature::Data, namespace.__instantiate(source: config, env: env) ) ] end.to_h ) end
Public Instance Methods
to_h()
click to toggle source
Calls superclass method
Configature::Data#to_h
# File lib/configature/config.rb, line 80 def to_h super.map do |k, v| [ k, case (v) when Array v.map do |e| e.respond_to?(:to_h) ? e.to_h : e end else v.respond_to?(:to_h) ? v.to_h : v end ] end.to_h end