Class: DynamicConfiguration::Config

Inherits:
BlankSlate
  • Object
show all
Defined in:
lib/dynamic_configuration.rb

Instance Method Summary collapse

Constructor Details

#initialize(const_name, config_directory) ⇒ Config

Returns a new instance of Config.



97
98
99
# File 'lib/dynamic_configuration.rb', line 97

def initialize(const_name, config_directory)
  @const_name, @config_directory = const_name, config_directory
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args, &block) ⇒ Object



116
117
118
119
120
121
122
# File 'lib/dynamic_configuration.rb', line 116

def method_missing(name, *args, &block)
  unless @settings && @settings[name]
    raise MissingGroupException.new("No configuration defined for a '#{name}' submodule")
  end

  @settings[name]
end

Instance Method Details

#load_module(file_pathname) ⇒ Object



101
102
103
104
105
106
107
108
109
110
# File 'lib/dynamic_configuration.rb', line 101

def load_module(file_pathname)
  mod_name = file_pathname.basename.to_s[0..-4]

  @modules ||= {}
  @modules[mod_name.intern] ||= Group.new(@config_directory)
  @modules[mod_name.intern].instance_eval(::IO.read(file_pathname.to_s))

  @settings ||= {}
  @settings[mod_name.intern] ||= Settings.new(@const_name, mod_name, @modules[mod_name.intern].settings)
end

#respond_to_missing?(name, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


112
113
114
# File 'lib/dynamic_configuration.rb', line 112

def respond_to_missing?(name, include_private=false)
  @settings && @settings[name]
end