提交 31248fe3 编写于 作者: J José Valim

Remove instrument! and require thread from AS::Notifications.

上级 efa85055
......@@ -45,7 +45,7 @@ module Notifications
class << self
attr_writer :notifier
delegate :publish, :subscribe, :to => :notifier
delegate :instrument, :instrument!, :to => :instrumenter
delegate :instrument, :to => :instrumenter
def notifier
@notifier ||= Notifier.new
......
require 'thread'
module ActiveSupport
module Notifications
# This is a default queue implementation that ships with Notifications. It
......@@ -21,8 +19,8 @@ def publish(*args)
@subscribers.each { |s| s.publish(*args) }
end
# This is a sync queue, so there is not waiting.
def wait
sleep(0.05) until @subscribers.all?(&:drained?)
end
# Used for internal implementation only.
......
......@@ -20,15 +20,6 @@ def instrument(name, payload={})
result
end
# The same as instrument, but sends the notification even if the yielded
# block raises an error.
def instrument!(name, payload={})
time = Time.now
yield(payload) if block_given?
ensure
@notifier.publish(name, time, Time.now, @id, payload)
end
private
def unique_id
SecureRandom.hex(10)
......
......@@ -67,29 +67,13 @@ def event(*args)
end
class InstrumentationTest < TestCase
delegate :instrument, :instrument!, :to => ActiveSupport::Notifications
delegate :instrument, :to => ActiveSupport::Notifications
def test_instrument_returns_block_result
assert_equal 2, instrument(:awesome) { 1 + 1 }
drain
end
def test_instrument_with_bang_returns_result_even_on_failure
begin
instrument!(:awesome, :payload => "notifications") do
raise "FAIL"
end
flunk
rescue
end
drain
assert_equal 1, @events.size
assert_equal :awesome, @events.last.name
assert_equal Hash[:payload => "notifications"], @events.last.payload
end
def test_instrument_yields_the_paylod_for_further_modification
assert_equal 2, instrument(:awesome) { |p| p[:result] = 1 + 1 }
drain
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册