class Everett::Subject
Constants
- CALLBACKS
Public Class Methods
[](model)
click to toggle source
# File lib/everett/subject.rb, line 14 def [](model) instances.fetch(model) { |key| instances[key] = new(model) } end
new(model)
click to toggle source
# File lib/everett/subject.rb, line 25 def initialize(model) @model = model @observers = ::Set.new end
Private Class Methods
instances()
click to toggle source
# File lib/everett/subject.rb, line 20 def instances @instances ||= {} end
Public Instance Methods
add_observer(observer)
click to toggle source
# File lib/everett/subject.rb, line 30 def add_observer(observer) return false if @observers.include?(observer) callbacks = CALLBACKS.select { |callback| observer.respond_to?(callback) } return false if callbacks.empty? # TODO: Rewrite the following line in the form of passing an observer to callbacks # if after_{create,update,destroy}_commit comes to call an identically named method # of a callback object (currently it always calls #after_commit). callbacks.each { |callback| @model.public_send(callback) { observer.public_send(callback, self) } } !!@observers.add(observer) end