aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2010-01-15 11:01:37 +0100
committerJosé Valim <jose.valim@gmail.com>2010-01-15 12:24:31 +0100
commit7f4d8e3fbd704cf1005a46309e3795192b114013 (patch)
tree39b65d628b46cc849086470c614b66351141cd0d /activesupport
parentb0994be5bd24559f1362a636b46271de6d6a92d6 (diff)
downloadrails-7f4d8e3fbd704cf1005a46309e3795192b114013.tar.gz
rails-7f4d8e3fbd704cf1005a46309e3795192b114013.tar.bz2
rails-7f4d8e3fbd704cf1005a46309e3795192b114013.zip
Yield the payload notifications for further modification (like adding the result).
Diffstat (limited to 'activesupport')
-rw-r--r--activesupport/lib/active_support/notifications.rb2
-rw-r--r--activesupport/lib/active_support/notifications/instrumenter.rb10
-rw-r--r--activesupport/test/notifications_test.rb4
3 files changed, 5 insertions, 11 deletions
diff --git a/activesupport/lib/active_support/notifications.rb b/activesupport/lib/active_support/notifications.rb
index a1383bb478..3e96decb8c 100644
--- a/activesupport/lib/active_support/notifications.rb
+++ b/activesupport/lib/active_support/notifications.rb
@@ -45,7 +45,7 @@ module ActiveSupport
class << self
attr_writer :notifier
delegate :publish, :subscribe, :to => :notifier
- delegate :instrument, :instrument!, :to => :instrumenter
+ delegate :instrument, :to => :instrumenter
def notifier
@notifier ||= Notifier.new
diff --git a/activesupport/lib/active_support/notifications/instrumenter.rb b/activesupport/lib/active_support/notifications/instrumenter.rb
index 85c5199946..f3d877efe7 100644
--- a/activesupport/lib/active_support/notifications/instrumenter.rb
+++ b/activesupport/lib/active_support/notifications/instrumenter.rb
@@ -13,19 +13,13 @@ module ActiveSupport
# Instrument the given block by measuring the time taken to execute it
# and publish it.
- def instrument(name, payload={}, add_result=false)
+ def instrument(name, payload={})
time = Time.now
- result = yield if block_given?
- payload.merge!(:result => result) if add_result
+ result = yield(payload) if block_given?
@notifier.publish(name, time, Time.now, @id, payload)
result
end
- # The same as instrument, but adds the result as payload.
- def instrument!(name, payload={}, &block)
- instrument(name, payload, true, &block)
- end
-
private
def unique_id
SecureRandom.hex(10)
diff --git a/activesupport/test/notifications_test.rb b/activesupport/test/notifications_test.rb
index 3690d723fa..c3eb1a4eb5 100644
--- a/activesupport/test/notifications_test.rb
+++ b/activesupport/test/notifications_test.rb
@@ -90,8 +90,8 @@ module Notifications
drain
end
- def test_instrument_with_band_adds_result_to_payload
- assert_equal 2, instrument!(:awesome) { 1 + 1 }
+ def test_instrument_yields_the_paylod_for_further_modification
+ assert_equal 2, instrument(:awesome) { |p| p[:result] = 1 + 1 }
drain
assert_equal 1, @events.size