- A
- C
- I
- N
- O
Add a new observer to the pool. The new observer needs to respond to
‘update’, otherwise it raises an ArgumentError
exception.
Source: show
# 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
Total number of observers.
Source: show
# File activemodel/lib/active_model/observing.rb, line 78 def count_observers observer_instances.size end
Instantiate the global observers.
Source: show
# File activemodel/lib/active_model/observing.rb, line 58 def instantiate_observers observers.each { |o| instantiate_observer(o) } end
Notify list of observers of a change.
Source: show
# File activemodel/lib/active_model/observing.rb, line 73 def notify_observers(*arg) observer_instances.each { |observer| observer.update(*arg) } end
Gets the current observer instances.
Source: show
# File activemodel/lib/active_model/observing.rb, line 53 def observer_instances @observer_instances ||= [] end
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)
Source: show
# File activemodel/lib/active_model/observing.rb, line 48 def observers @observers ||= ObserverArray.new(self) end
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.
Source: show
# File activemodel/lib/active_model/observing.rb, line 39 def observers=(*values) observers.replace(values.flatten) end
Notify observers when the observed class is subclassed.
Source: show
# File activemodel/lib/active_model/observing.rb, line 99 def inherited(subclass) super notify_observers :observed_class_inherited, subclass end