Module: LoraRb::Settings
Instance Attribute Summary collapse
-
#_settings ⇒ Object
readonly
Returns the value of attribute _settings.
Instance Method Summary collapse
-
#deep_merge!(target, data) ⇒ Object
Deep merging of hashes deep_merge by Stefan Rusterholz, see www.ruby-forum.com/topic/142809.
-
#load!(filename, options = {}) ⇒ Object
This is the main point of entry - we call Settings.load! and provide a name of the file to read as it’s argument.
- #method_missing(name, *args, &block) ⇒ Object
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *args, &block) ⇒ Object
68 69 70 71 |
# File 'lib/core/configuration_dynamic.rb', line 68 def method_missing(name, *args, &block) @_settings[name.to_sym] || fail(NoMethodError, "unknown configuration root #{name}", caller) end |
Instance Attribute Details
#_settings ⇒ Object (readonly)
Returns the value of attribute _settings.
38 39 40 |
# File 'lib/core/configuration_dynamic.rb', line 38 def _settings @_settings end |
Instance Method Details
#deep_merge!(target, data) ⇒ Object
Deep merging of hashes deep_merge by Stefan Rusterholz, see www.ruby-forum.com/topic/142809
62 63 64 65 66 |
# File 'lib/core/configuration_dynamic.rb', line 62 def deep_merge!(target, data) merger = proc{|key, v1, v2| Hash === v1 && Hash === v2 ? v1.merge(v2, &merger) : v2 } target.merge! data, &merger end |
#load!(filename, options = {}) ⇒ Object
This is the main point of entry - we call Settings.load! and provide a name of the file to read as it’s argument. We can also pass in some options, but at the moment it’s being used to allow per-environment overrides in Rails
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/core/configuration_dynamic.rb', line 44 def load!(filename, = {}) newsets = if defined?(ERB) YAML.load(ERB.new(File.read(filename)).result) else YAML::load_file(filename) end newsets.extend DeepSymbolizable newsets = newsets.deep_symbolize newsets = newsets[[:env].to_sym] if [:env] && \ newsets[[:env].to_sym] deep_merge!(@_settings, newsets) end |