Add a new observer to the pool. The new observer needs to respond to 'update', otherwise it raises an ArgumentError exception.
# File 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.
# File lib/active_model/observing.rb, line 78 def count_observers observer_instances.size end
Instantiate the global observers.
# File lib/active_model/observing.rb, line 58 def instantiate_observers observers.each { |o| instantiate_observer(o) } end
Notify list of observers of a change.
# File lib/active_model/observing.rb, line 73 def notify_observers(*arg) observer_instances.each { |observer| observer.update(*arg) } end
Gets the current observer instances.
# File 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)
# File lib/active_model/observing.rb, line 48 def observers @observers ||= ObserverArray.new(self) end
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 lib/active_model/observing.rb, line 39 def observers=(*values) observers.replace(values.flatten) end
Generated with the Darkfish Rdoc Generator 2.