Class: PulseMeter::Observer

Inherits:
Object
  • Object
show all
Extended by:
Mixins::Utils
Defined in:
lib/pulse_meter/observer.rb

Direct Known Subclasses

Extended

Defined Under Namespace

Classes: Extended

Class Method Summary collapse

Methods included from Mixins::Utils

assert_array!, assert_positive_integer!, assert_ranged_float!, camelize, camelize_keys, constantize, each_subset, parse_time, subsets_of, symbolize_keys, titleize, underscore, uniqid

Class Method Details

.observe_class_method(klass, method, sensor, &proc) ⇒ Object

Registeres an observer for class method

Parameters:

  • klass (Class)

    class

  • method (Symbol)

    class method

  • sensor (Object)

    notifications receiver

  • proc (Proc)

    proc to be called in context of receiver each time observed method called



47
48
49
50
51
52
53
54
# File 'lib/pulse_meter/observer.rb', line 47

def observe_class_method(klass, method, sensor, &proc)
  with_observer = method_with_observer(method)
  unless klass.respond_to?(with_observer)
    method_owner = metaclass(klass)
    block = chain_block(method, sensor, &proc)
    method_owner.instance_eval &block
  end
end

.observe_method(klass, method, sensor, &proc) ⇒ Object

Registeres an observer for instance method

Parameters:

  • klass (Class)

    class

  • method (Symbol)

    instance method

  • sensor (Object)

    notifications receiver

  • proc (Proc)

    proc to be called in context of receiver each time observed method called



34
35
36
37
38
39
40
# File 'lib/pulse_meter/observer.rb', line 34

def observe_method(klass, method, sensor, &proc)
  with_observer = method_with_observer(method)
  unless klass.method_defined?(with_observer)
    block = chain_block(method, sensor, &proc)
    klass.class_eval &block
  end
end

.unobserve_class_method(klass, method) ⇒ Object

Removes observation from class method

Parameters:

  • klass (Class)

    class

  • method (Symbol)

    class method name



20
21
22
23
24
25
26
27
# File 'lib/pulse_meter/observer.rb', line 20

def unobserve_class_method(klass, method)
  with_observer = method_with_observer(method)
  if klass.respond_to?(with_observer)
    method_owner = metaclass(klass)
    block = unchain_block(method)
    method_owner.instance_eval &block
  end
end

.unobserve_method(klass, method) ⇒ Object

Removes observation from instance method

Parameters:

  • klass (Class)

    class

  • method (Symbol)

    instance method name



9
10
11
12
13
14
15
# File 'lib/pulse_meter/observer.rb', line 9

def unobserve_method(klass, method)
  with_observer = method_with_observer(method)
  if klass.method_defined?(with_observer)
    block = unchain_block(method)
    klass.class_eval &block
  end
end