Merge pull request #6093 from marcandre/observer_public

notify_observers should be public
This commit is contained in:
Jeremy Kemper 2012-04-30 19:18:10 -07:00
commit cb5b0cf93f
2 changed files with 27 additions and 21 deletions

View File

@ -110,25 +110,24 @@ module ActiveModel
end
end
private
# Fires notifications to model's observers
#
# def save
# notify_observers(:before_save)
# ...
# notify_observers(:after_save)
# end
#
# Custom notifications can be sent in a similar fashion:
#
# notify_observers(:custom_notification, :foo)
#
# This will call +custom_notification+, passing as arguments
# the current object and :foo.
#
def notify_observers(method, *extra_args)
self.class.notify_observers(method, self, *extra_args)
end
# Fires notifications to model's observers
#
# def save
# notify_observers(:before_save)
# ...
# notify_observers(:after_save)
# end
#
# Custom notifications can be sent in a similar fashion:
#
# notify_observers(:custom_notification, :foo)
#
# This will call +custom_notification+, passing as arguments
# the current object and :foo.
#
def notify_observers(method, *extra_args)
self.class.notify_observers(method, self, *extra_args)
end
end
# == Active Model Observers

View File

@ -138,7 +138,14 @@ class ObserverTest < ActiveModel::TestCase
foo = Foo.new
FooObserver.instance.stub = stub
FooObserver.instance.stub.expects(:event_with).with(foo)
Foo.send(:notify_observers, :on_spec, foo)
Foo.notify_observers(:on_spec, foo)
end
test "calls existing observer event from the instance" do
foo = Foo.new
FooObserver.instance.stub = stub
FooObserver.instance.stub.expects(:event_with).with(foo)
foo.notify_observers(:on_spec)
end
test "passes extra arguments" do
@ -150,7 +157,7 @@ class ObserverTest < ActiveModel::TestCase
test "skips nonexistent observer event" do
foo = Foo.new
Foo.send(:notify_observers, :whatever, foo)
Foo.notify_observers(:whatever, foo)
end
test "update passes a block on to the observer" do