module MessageBus::DiagnosticsHelper def publish(channel, data, opts = nil) id = super(channel, data, opts) if @tracking m = MessageBus::Message.new(-1, id, channel, data) m.user_ids = opts[:user_ids] if opts m.group_ids = opts[:group_ids] if opts @tracking << m end id end def track_publish @tracking = tracking = [] yield tracking ensure @tracking = nil end end module MessageBus extend MessageBus::DiagnosticsHelper end