Sha256: c0e1c7cdffc7e314334e65fc2bf949c70a86fbde3b09fad73c4bc624ee0711dc
Contents?: true
Size: 1.79 KB
Versions: 2
Compression:
Stored size: 1.79 KB
Contents
# encoding: utf-8 # This file is distributed under New Relic's license terms. # See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details. require 'new_relic/agent/instrumentation/notifications_subscriber' module NewRelic module Agent module Instrumentation class ActionCableSubscriber < NotificationsSubscriber PERFORM_ACTION = 'perform_action.action_cable'.freeze def start(name, id, payload) #THREAD_LOCAL_ACCESS return unless state.is_execution_traced? finishable = if name == PERFORM_ACTION Tracer.start_transaction_or_segment( name: transaction_name_from_payload(payload), category: :action_cable ) else Tracer.start_segment(name: metric_name_from_payload(name, payload)) end push_segment(id, finishable) rescue => e log_notification_error e, name, 'start' end def finish(name, id, payload) #THREAD_LOCAL_ACCESS return unless state.is_execution_traced? if exception = exception_object(payload) NewRelic::Agent.notice_error exception end finishable = pop_segment(id) finishable.finish if finishable rescue => e log_notification_error e, name, 'finish' end private def transaction_name_from_payload(payload) "Controller/ActionCable/#{payload[:channel_class]}/#{payload[:action]}" end def metric_name_from_payload(name, payload) "Ruby/ActionCable/#{payload[:channel_class]}/#{action_name(name)}" end DOT_ACTION_CABLE = '.action_cable'.freeze def action_name(name) name.gsub DOT_ACTION_CABLE, NewRelic::EMPTY_STR end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
newrelic_rpm-6.11.0.365 | lib/new_relic/agent/instrumentation/action_cable_subscriber.rb |
newrelic_rpm-6.10.0.364 | lib/new_relic/agent/instrumentation/action_cable_subscriber.rb |