Sha256: 195fd82e157d2e7cfb8cb148c62f667b338e71b5e87134b3c66a10a4cd3d664c
Contents?: true
Size: 1.87 KB
Versions: 1
Compression:
Stored size: 1.87 KB
Contents
module Anyway class Config class << self attr_reader :defaults, :config_attributes def attr_config(*args,hargs) @defaults = hargs.dup.with_indifferent_access @config_attributes = args+hargs.keys attr_accessor *@config_attributes end def config_name(val = nil) return (@config_name = val.to_s) unless val.nil? @config_name ||= extract_name end # Load config as Hash by any name # # Example: # # my_config = Anyway::Config.for(:my_app) # # will load data from config/my_app.yml, secrets.my_app, ENV["MY_APP_*"] def for(name) self.new(name,false).load_from_sources end private def extract_name self.name[/^(\w+)/].underscore end end def initialize(config_name=nil, do_load=true) @config_name = config_name || self.class.config_name load if do_load end def reload clear load self end def clear self.class.config_attributes.each do |attr| self.send("#{attr}=", nil) end self end def load config = load_from_sources self.class.defaults.deep_dup config.each do |key, val| self.send("#{key}=",val) end end def load_from_sources(config={}.with_indifferent_access) # then load from YAML if any config_path = Rails.root.join("config","#{@config_name}.yml") if File.file? config_path require 'yaml' config.deep_merge! (YAML.load_file(config_path)[Rails.env] || {}) end # then load from Rails secrets if Rails.application.respond_to?(:secrets) config.deep_merge! (Rails.application.secrets.send(@config_name)||{}) end # and then load from env config.deep_merge! (Anyway.env.send(@config_name) || {}) config end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
anyway_config-0.2.0 | lib/anyway/config.rb |