Module: Wms::Config::Mixin::MixinClassMethod
- Defined in:
- lib/wms/config/mixin.rb
Overview
This inner module is defined for class method
Instance Attribute Summary collapse
-
#default ⇒ Object
Class configurations.
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.
-
#get_default(name) ⇒ Object
return default value given name.
-
#set_default(name, opts) ⇒ Object
Define a new configuration setting.
-
#source(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.
Instance Attribute Details
#default ⇒ Object
Class configurations
69 70 71 |
# File 'lib/wms/config/mixin.rb', line 69 def default @default 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
110 111 112 113 114 |
# File 'lib/wms/config/mixin.rb', line 110 def deep_merge!(target, data) merger = proc{|key, v1, v2| Hash === v1 && Hash === v2 ? v1.merge(v2, &merger) : v2 } target.merge! data, &merger end |
#get_default(name) ⇒ Object
return default value given name
81 82 83 84 |
# File 'lib/wms/config/mixin.rb', line 81 def get_default(name) key_name = if name.is_a?(Symbol) then name else name.to_s end @default[key_name][:default] if @default[key_name] end |
#set_default(name, opts) ⇒ Object
Define a new configuration setting
72 73 74 75 76 77 78 |
# File 'lib/wms/config/mixin.rb', line 72 def set_default(name, opts) @default ||= Hash.new name = name.to_s unless name.is_a?(Symbol) @default[name] = opts # ok if this is empty end |
#source(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
Example Load without environment
> Settings.load!(“config/appdata/example.yml”)
Load with environment
> Settings.load!(
"#{Rails.root}/config/appdata/env-example.yml",
:env => Rails.env)
99 100 101 102 103 104 105 106 |
# File 'lib/wms/config/mixin.rb', line 99 def source(filename, ={}) newsets = YAML::load_file(filename).deep_symbolize_keys newsets = newsets[[:env].to_sym] if \ [:env] && \ newsets[[:env].to_sym] @default ||= Hash.new deep_merge!(@default, newsets) end |