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