class Yao::Config
Constants
- HOOK_RENEW_CLIENT_KEYS
Public Instance Methods
_configuration_defaults()
click to toggle source
@return [Hash]
# File lib/yao/config.rb, line 5 def _configuration_defaults @_configuration_defaults ||= {} end
_configuration_hooks()
click to toggle source
@return [Hash]
# File lib/yao/config.rb, line 10 def _configuration_hooks @_configuration_hooks ||= {} end
_configuration_hooks_queue()
click to toggle source
@return [Array]
# File lib/yao/config.rb, line 15 def _configuration_hooks_queue @_configuration_hooks_queue ||= [] end
configuration()
click to toggle source
@return [Hash]
# File lib/yao/config.rb, line 20 def configuration @configuration ||= {} end
delay_hook=(v)
click to toggle source
@param v [Boolean] @return [Array]
# File lib/yao/config.rb, line 28 def delay_hook=(v) @delay_hook = v if !v and !_configuration_hooks_queue.empty? _configuration_hooks_queue.each do |n, val| _configuration_hooks[n].call(val) if _configuration_hooks[n] end # Authorization process should have special hook # and should run last unless (_configuration_hooks_queue.map(&:first) & HOOK_RENEW_CLIENT_KEYS).empty? Yao::Auth.try_new end _configuration_hooks_queue.clear end end
delay_hook?()
click to toggle source
@return [Boolean]
# File lib/yao/config.rb, line 45 def delay_hook? @delay_hook end
param(name, default, &hook)
click to toggle source
@param name [String] @param default [String] @param hook [Proc]
# File lib/yao/config.rb, line 52 def param(name, default, &hook) raise("Duplicate definition of #{name}") if self.respond_to?(name) name = name.to_sym _configuration_defaults[name] = default _configuration_hooks[name] = hook if block_given? self.define_singleton_method(name) do |*a| case a.size when 0 configuration[name] || _configuration_defaults[name] when 1 set(name, a.first) else raise ArgumentError, "wrong number of arguments (#{a.size} for 0, 1)" end end end
set(name, value)
click to toggle source
@param name [String] @param value [String] @return [String]
# File lib/yao/config.rb, line 73 def set(name, value) raise("Undefined config key #{name}") unless self.respond_to?(name) configuration[name.to_sym] = value if delay_hook? _configuration_hooks_queue.push([name, value]) else _configuration_hooks[name].call(value) if _configuration_hooks[name] end value end