module ActiveSupport::Notifications
def instrument(name, payload = {})
def instrument(name, payload = {}) if @instrumenters[name] instrumenter.instrument(name, payload) { yield payload if block_given? } else yield payload if block_given? end end
def instrumenter
def instrumenter Thread.current[:"instrumentation_#{notifier.object_id}"] ||= Instrumenter.new(notifier) end
def publish(name, *args)
def publish(name, *args) notifier.publish(name, *args) end
def subscribe(*args, &block)
def subscribe(*args, &block) notifier.subscribe(*args, &block).tap do @instrumenters.clear end end
def subscribed(callback, *args, &block)
def subscribed(callback, *args, &block) subscriber = subscribe(*args, &callback) yield ensure unsubscribe(subscriber) end
def unsubscribe(args)
def unsubscribe(args) notifier.unsubscribe(args) @instrumenters.clear end