Module: Observed::Configurable

Overview

Indicates that classes included this module to have attributes which are configurable. ‘configurable` means that the attributes can be configured via named parameters of the constructor and the `configure` instance method of the class included this module.

Defined Under Namespace

Modules: ClassMethods, ModuleMethods Classes: NotConfiguredError

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



98
99
100
101
102
103
104
# File 'lib/observed/configurable.rb', line 98

def included(klass)
  if klass.is_a? Class
    klass.extend ClassMethods
  else
    klass.extend ModuleMethods
  end
end

Instance Method Details

#configure(args = {}) ⇒ Object



11
12
13
14
15
16
17
18
# File 'lib/observed/configurable.rb', line 11

def configure(args={})
  if @attributes
    @attributes.merge! args
  else
    @attributes ||= args.dup
  end
  self
end

#get_attribute_value(name) ⇒ Object

Returns In order of precedence, the value of the instance variable named ‘“@” + name`, or the value `@attributes`, or the default value for the attribute named `name`.

Parameters:

  • name (String|Symbol)

Returns:

  • (Object)

    In order of precedence, the value of the instance variable named ‘“@” + name`, or the value `@attributes`, or the default value for the attribute named `name`



28
29
30
# File 'lib/observed/configurable.rb', line 28

def get_attribute_value(name)
  instance_variable_get("@#{name.to_s}") || @attributes[name] || self.class.defaults[name]
end

#has_attribute_value?(name) ⇒ Boolean

Parameters:

  • name (String|Symbol)

Returns:

  • (Boolean)


21
22
23
# File 'lib/observed/configurable.rb', line 21

def has_attribute_value?(name)
  !! get_attribute_value(name)
end

#initialize(args = {}) ⇒ Object



7
8
9
# File 'lib/observed/configurable.rb', line 7

def initialize(args={})
  configure(args)
end