Class: Benry::Config
- Inherits:
-
Object
- Object
- Benry::Config
- Defined in:
- lib/benry/config.rb
Defined Under Namespace
Classes: AbstractValue, SecretValue
Constant Summary collapse
- ABSTRACT =
represents ‘should be set in subclass’
AbstractValue.new
- SECRET =
represents ‘should be set in private config file’
SecretValue.new
Class Method Summary collapse
-
.add(key, value, desc = nil) ⇒ Object
Add new config.
-
.put(key, value, desc = nil) ⇒ Object
Add or set config.
-
.set(key, value, desc = nil) ⇒ Object
Set existing config.
Instance Method Summary collapse
-
#[](key) ⇒ Object
Return config value.
- #defined?(key) ⇒ Boolean
- #each(sort = false, &b) ⇒ Object
- #each!(sort = false, &b) ⇒ Object
-
#get_all(prefix_key) ⇒ Object
Gathers related configs starting with prefix specified.
-
#initialize ⇒ Config
constructor
A new instance of Config.
Constructor Details
#initialize ⇒ Config
Returns a new instance of Config.
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/benry/config.rb', line 41 def initialize #; [!7rdq4] traverses parent class and gathers config values. _traverse(self.class) {|k, v| instance_variable_set("@#{k}", v) } instance_variables().each do |ivar| val = instance_variable_get(ivar) next unless val.is_a?(AbstractValue) #; [!v9f3k] when envvar name not specified... if val.envvar == nil #; [!z9mno] raises ConfigError if ABSTRACT or SECRET is not overriden. raise ConfigError.new("config ':#{ivar.to_s[1..-1]}' should be set, but not.") #; [!ida3r] when envvar name specified... else #; [!txl88] raises ConfigError when envvar not set. envvar = val.envvar begin val = ENV.fetch(envvar.to_s) rescue KeyError raise ConfigError.new("environment variable '$#{envvar}' should be set for config item ':#{ivar.to_s[1..-1]}'.") end #; [!y47ul] sets envvar value as config value if envvar provided. instance_variable_set(ivar, val) end end end |
Class Method Details
.add(key, value, desc = nil) ⇒ Object
Add new config. Raises ConfigError when already defined.
74 75 76 77 78 79 80 81 82 83 |
# File 'lib/benry/config.rb', line 74 def self.add(key, value, desc=nil) #; [!m7w96] raises ConfigError when already added. ! self.method_defined?(key) or raise ConfigError.new("add #{key.inspect} : already defined (use set() instead).") #; [!s620t] adds new key and value. (@__dict ||= {})[key] = value #; [!o0ts4] defines getter method. attr_reader key value end |
.put(key, value, desc = nil) ⇒ Object
Add or set config. Raises nothing whether defined or not.
96 97 98 99 100 101 102 103 |
# File 'lib/benry/config.rb', line 96 def self.put(key, value, desc=nil) #; [!abd3f] raises nothing whener defined or not. #; [!gu2f0] sets key and value. (@__dict ||= {})[key] = value #; [!84kbr] defines getter method. attr_reader key value end |
.set(key, value, desc = nil) ⇒ Object
Set existing config. Raises ConfigError when key not defined.
86 87 88 89 90 91 92 93 |
# File 'lib/benry/config.rb', line 86 def self.set(key, value, desc=nil) #; [!fxc4h] raises ConfigError when not defined yet. self.method_defined?(key) or raise ConfigError.new("set #{key.inspect} : not defined (use add() instead).") #; [!cv8iz] overrides existing value. (@__dict ||= {})[key] = value value end |
Instance Method Details
#[](key) ⇒ Object
Return config value.
106 107 108 109 |
# File 'lib/benry/config.rb', line 106 def [](key) #; [!z9r30] returns config value. return self.__send__(key) end |
#defined?(key) ⇒ Boolean
130 131 132 133 134 |
# File 'lib/benry/config.rb', line 130 def defined?(key) #; [!y1fsh] returns true if config key defined. #; [!k1b5q] returns false if config key not defined. return instance_variable_defined?("@#{key}") end |
#each(sort = false, &b) ⇒ Object
136 137 138 139 140 141 142 143 144 |
# File 'lib/benry/config.rb', line 136 def each(sort=false, &b) #; [!f4ljv] returns Enumerator object if block not given. return to_enum(:each, sort) unless block_given?() #; [!4wqpu] yields each key and val with hiding secret values. #; [!a9glw] sorts keys if 'true' specified as the first argument. _each(sort, true, &b) #; [!wggik] returns self if block given. return self end |
#each!(sort = false, &b) ⇒ Object
146 147 148 149 150 151 152 153 154 |
# File 'lib/benry/config.rb', line 146 def each!(sort=false, &b) #; [!zd9lk] returns Enumerator object if block not given. return to_enum(:each!, sort) unless block_given?() #; [!7i5p2] yields each key and val without hiding secret values. #; [!aib7c] sorts keys if 'true' specified as the first argument. _each(sort, false, &b) #; [!2abgb] returns self if block given. return self end |
#get_all(prefix_key) ⇒ Object
Gathers related configs starting with prefix specified.
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/benry/config.rb', line 112 def get_all(prefix_key) #; [!85z23] gathers configs which name starts with specified prefix. prefix = "@#{prefix_key}" symbol_p = prefix_key.is_a?(Symbol) range = prefix.length..-1 d = {} self.instance_variables.each do |ivar| if ivar.to_s.start_with?(prefix) val = self.instance_variable_get(ivar) key = ivar[range] #; [!b72fr] if prefix is a string, then keys returend will also be string. key = key.intern if symbol_p d[key] = val end end return d end |