Module: MineSetting

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

Overview

Files:

config/settings/base.yml
config/settings/secrets.yml
config/settings/other_config.yml

File Content:

development:
  foo: bar
test:
  xxx: yyy

Code:

class MySettings
  extend MineSetting

  load_dir Rails.root.join('config/settings'), 'development'
end

MySettings.base # bar MySettings.secrets MySettings.other_config

Constant Summary collapse

VERSION =
"0.1.0"

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(cls) ⇒ Object



31
32
33
# File 'lib/mine_setting.rb', line 31

def self.included(cls)
  raise "Cannot include SimpleSettings, please use extend"
end

Instance Method Details

#load_dir(dir_path, env) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/mine_setting.rb', line 35

def load_dir(dir_path, env)
  Dir[File.join(dir_path, '*')].each do |filepath|
    filename = File.basename filepath
    next unless filename =~ /^\w+\.ya?ml$/
    puts "Load config '#{filename}'"

    setting_name = filename.gsub(/\.ya?ml/, '')
    eval(%Q{
      def self.#{setting_name}
        @#{setting_name} ||= load_setting('#{filepath}', '#{env}')
      end
    })
  end
end