Class: Rdm::ConfigManager

Inherits:
Object
  • Object
show all
Defined in:
lib/rdm/yml_config/config_manager.rb

Class Method Summary collapse

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(meth) ⇒ Object



31
32
33
34
# File 'lib/rdm/yml_config/config_manager.rb', line 31

def method_missing(meth)
  config.keys.include?(meth) ? Rdm::Utils::Ostruct.to_recursive_ostruct(config).send(meth) : 
                               (raise ArgumentError, ":#{meth} configuration was not defined for current package. Add `import '#{meth}'` to your Package.rb file")
end

Class Method Details

.instanceObject



20
21
22
# File 'lib/rdm/yml_config/config_manager.rb', line 20

def instance
  @instance ||= new
end

.load_config(envs:, path_to_config:) ⇒ Object



5
6
7
8
9
10
# File 'lib/rdm/yml_config/config_manager.rb', line 5

def load_config(envs:, path_to_config:)
  new_config = Rdm::ConfigCaster.new(envs).cast(YAML.load(File.read(path_to_config)))
  validate_params!(new_config, envs)
  
  instance.config.merge! new_config
end

.method_missing(meth, *args, &block) ⇒ Object



16
17
18
# File 'lib/rdm/yml_config/config_manager.rb', line 16

def method_missing(meth, *args, &block)
  instance.send(meth)
end

.reset!Object



12
13
14
# File 'lib/rdm/yml_config/config_manager.rb', line 12

def reset!
  instance.config.clear
end

Instance Method Details

#configObject



36
37
38
# File 'lib/rdm/yml_config/config_manager.rb', line 36

def config
  @config ||= {}
end