module MineSetting
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 # {foo: bar} MySettings.secrets MySettings.other_config
Constants
- VERSION
Public Class Methods
included(cls)
click to toggle source
# File lib/mine_setting.rb, line 31 def self.included(cls) raise "Cannot include SimpleSettings, please use extend" end
Public Instance Methods
load_dir(dir_path, env)
click to toggle source
# 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
Protected Instance Methods
load_setting(filepath, env)
click to toggle source
# File lib/mine_setting.rb, line 53 def load_setting(filepath, env) str = File.read(filepath) YAML.load(ERB.new(str).result)[env] end