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
def add_observer(observer)
  unless observer.respond_to? :update
    raise ArgumentError, "observer needs to respond to `update'"
  end
  observer_instances << observer
end
count_observers()

Total number of observers.

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

Instantiate the global observers.

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

Notify list of observers of a change.

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

Gets the current observer instances.

# File activemodel/lib/active_model/observing.rb, line 53
def observer_instances
  @observer_instances ||= []
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
def observers
  @observers ||= ObserverArray.new(self)
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
def observers=(*values)
  observers.replace(values.flatten)
end
Instance Protected methods
inherited(subclass)

Notify observers when the observed class is subclassed.

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