Methods
A
C
I
N
O
Instance Public methods
add_observer(observer)

Add a new observer to the pool. The new observer needs to respond to ‘update’, otherwise it raises an ArgumentError exception.

    # File activemodel/lib/active_model/observing.rb, line 65
65:       def add_observer(observer)
66:         unless observer.respond_to? :update
67:           raise ArgumentError, "observer needs to respond to `update'"
68:         end
69:         observer_instances << observer
70:       end
count_observers()

Total number of observers.

    # File activemodel/lib/active_model/observing.rb, line 78
78:       def count_observers
79:         observer_instances.size
80:       end
instantiate_observers()

Instantiate the global observers.

    # File activemodel/lib/active_model/observing.rb, line 58
58:       def instantiate_observers
59:         observers.each { |o| instantiate_observer(o) }
60:       end
notify_observers(*arg)

Notify list of observers of a change.

    # File activemodel/lib/active_model/observing.rb, line 73
73:       def notify_observers(*arg)
74:         observer_instances.each { |observer| observer.update(*arg) }
75:       end
observer_instances()

Gets the current observer instances.

    # File activemodel/lib/active_model/observing.rb, line 53
53:       def observer_instances
54:         @observer_instances ||= []
55:       end
observers()

Gets an array of observers observing this model. The array also provides enable and disable methods that allow you to selectively enable and disable observers. (see ActiveModel::ObserverArray.enable and ActiveModel::ObserverArray.disable for more on this)

    # File activemodel/lib/active_model/observing.rb, line 48
48:       def observers
49:         @observers ||= ObserverArray.new(self)
50:       end
observers=(*values)

Active Model Observers Activation

Activates the observers assigned. Examples:

  class ORM
    include ActiveModel::Observing
  end

  # Calls PersonObserver.instance
  ORM.observers = :person_observer

  # Calls Cacher.instance and GarbageCollector.instance
  ORM.observers = :cacher, :garbage_collector

  # Same as above, just using explicit class references
  ORM.observers = Cacher, GarbageCollector

Note: Setting this does not instantiate the observers yet. instantiate_observers is called during startup, and before each development request.

    # File activemodel/lib/active_model/observing.rb, line 39
39:       def observers=(*values)
40:         observers.replace(values.flatten)
41:       end
Instance Protected methods
inherited(subclass)

Notify observers when the observed class is subclassed.

     # File activemodel/lib/active_model/observing.rb, line 99
 99:         def inherited(subclass)
100:           super
101:           notify_observers :observed_class_inherited, subclass
102:         end