diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2018-07-26 12:15:41 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2018-07-26 12:15:41 -0700 |
commit | 4cdedb571cc842ae9883a9b9754471ae3e82f698 (patch) | |
tree | 41297a56515e72657c6a679b468d2fcf0a642595 /activesupport/test | |
parent | 5e0c423881985abfcbeffa602ee0d15467e24bf7 (diff) | |
download | rails-4cdedb571cc842ae9883a9b9754471ae3e82f698.tar.gz rails-4cdedb571cc842ae9883a9b9754471ae3e82f698.tar.bz2 rails-4cdedb571cc842ae9883a9b9754471ae3e82f698.zip |
Always subscribe to event objects via `AS::Notifications.subscribe`
We don't need to have a special subscribe method for objects. The
regular `subscribe` method is more expensive than a specialized method,
but `subscribe` should not be called frequently. If that turns out to
be a hotspot, we can introduce a specialized method. :)
Diffstat (limited to 'activesupport/test')
-rw-r--r-- | activesupport/test/notifications_test.rb | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/activesupport/test/notifications_test.rb b/activesupport/test/notifications_test.rb index 119062d5bf..62817a839a 100644 --- a/activesupport/test/notifications_test.rb +++ b/activesupport/test/notifications_test.rb @@ -29,7 +29,7 @@ module Notifications class SubscribeEventObjects < TestCase def test_subscribe_events events = [] - @notifier.subscribe_event do |event| + @notifier.subscribe do |event| events << event end @@ -42,16 +42,23 @@ module Notifications assert_operator event.duration, :>, 0 end - def test_subscribe_via_subscribe_method - events = [] - @notifier.subscribe do |event| - events << event + def test_subscribe_via_top_level_api + old_notifier = ActiveSupport::Notifications.notifier + ActiveSupport::Notifications.notifier = ActiveSupport::Notifications::Fanout.new + + event = nil + ActiveSupport::Notifications.subscribe("foo") do |e| + event = e end - ActiveSupport::Notifications.instrument("foo") - event = events.first - assert event, "should have an event" - assert_operator event.allocations, :>, 0 + ActiveSupport::Notifications.instrument("foo") do + 100.times { Object.new } # allocate at least 100 objects + end + + assert event + assert_operator event.allocations, :>=, 100 + ensure + ActiveSupport::Notifications.notifier = old_notifier end end |