Class: Anyway::Config
- Inherits:
-
Object
- Object
- Anyway::Config
- Defined in:
- lib/anyway/config.rb
Class Attribute Summary collapse
-
.config_attributes ⇒ Object
readonly
Returns the value of attribute config_attributes.
-
.defaults ⇒ Object
readonly
Returns the value of attribute defaults.
Class Method Summary collapse
- .attr_config(*args, hargs) ⇒ Object
- .config_name(val = nil) ⇒ Object
-
.for(name) ⇒ Object
Load config as Hash by any name.
Instance Method Summary collapse
- #clear ⇒ Object
-
#initialize(config_name = nil, do_load = true) ⇒ Config
constructor
A new instance of Config.
- #load ⇒ Object
- #load_from_sources(config = {}.with_indifferent_access) ⇒ Object
- #reload ⇒ Object
Constructor Details
#initialize(config_name = nil, do_load = true) ⇒ Config
33 34 35 36 |
# File 'lib/anyway/config.rb', line 33 def initialize(config_name=nil, do_load=true) @config_name = config_name || self.class.config_name load if do_load end |
Class Attribute Details
.config_attributes ⇒ Object (readonly)
Returns the value of attribute config_attributes.
4 5 6 |
# File 'lib/anyway/config.rb', line 4 def config_attributes @config_attributes end |
.defaults ⇒ Object (readonly)
Returns the value of attribute defaults.
4 5 6 |
# File 'lib/anyway/config.rb', line 4 def defaults @defaults end |
Class Method Details
.attr_config(*args, hargs) ⇒ Object
6 7 8 9 10 |
# File 'lib/anyway/config.rb', line 6 def attr_config(*args,hargs) @defaults = hargs.dup.with_indifferent_access @config_attributes = args+hargs.keys attr_accessor *@config_attributes end |
.config_name(val = nil) ⇒ Object
12 13 14 15 |
# File 'lib/anyway/config.rb', line 12 def config_name(val = nil) return (@config_name = val.to_s) unless val.nil? @config_name ||= extract_name end |
.for(name) ⇒ Object
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_*"]
23 24 25 |
# File 'lib/anyway/config.rb', line 23 def for(name) self.new(name,false).load_from_sources end |
Instance Method Details
#clear ⇒ Object
44 45 46 47 48 49 |
# File 'lib/anyway/config.rb', line 44 def clear self.class.config_attributes.each do |attr| self.send("#{attr}=", nil) end self end |
#load ⇒ Object
51 52 53 54 55 56 |
# File 'lib/anyway/config.rb', line 51 def load config = load_from_sources self.class.defaults.deep_dup config.each do |key, val| self.send("#{key}=",val) end end |
#load_from_sources(config = {}.with_indifferent_access) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/anyway/config.rb', line 58 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 |
#reload ⇒ Object
38 39 40 41 42 |
# File 'lib/anyway/config.rb', line 38 def reload clear load self end |