Module: RailsConfigurator

Defined in:
lib/rails_configurator.rb,
lib/rails_configurator/version.rb

Defined Under Namespace

Modules: InstanceMethods

Constant Summary collapse

VERSION =
"0.0.1"

Class Method Summary collapse

Class Method Details

.extend(config, property, options = {}, &block) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/rails_configurator.rb', line 9

def RailsConfigurator.extend(config, property, options={}, &block)
  config.class.class_eval do
    
    define_method(property) do
      ivar = "@#{property}"
      instance_variable_get(ivar) || instance_variable_set(ivar, (begin
        
        defaults = options[:defaults] || {}
        settings_path = options[:path] || Rails.root.join("config", "#{property}.yml")
        settings = YAML.load_file(settings_path)[Rails.env.to_s]
        settings.reverse_merge!(defaults)
        
        o = OpenStruct.new(settings)
        o.class_eval(&block) if block_given?
        o
      end))
    end
    
  end
end