Module: OpenTelemetry::Instrumentation::ActiveSupport
- Defined in:
- lib/opentelemetry/instrumentation/active_support.rb,
lib/opentelemetry/instrumentation/active_support/version.rb,
lib/opentelemetry/instrumentation/active_support/instrumentation.rb,
lib/opentelemetry/instrumentation/active_support/span_subscriber.rb
Overview
rubocop:disable Style/Documentation
Defined Under Namespace
Classes: Instrumentation, SpanSubscriber
Constant Summary collapse
- VERSION =
'0.1.1'
Class Method Summary collapse
-
.subscribe(tracer, pattern, notification_payload_transform = nil, disallowed_notification_payload_keys = []) ⇒ Object
A very hacky way to make sure that OpenTelemetry::Instrumentation::ActiveSupport::SpanSubscriber gets invoked first.
Class Method Details
.subscribe(tracer, pattern, notification_payload_transform = nil, disallowed_notification_payload_keys = []) ⇒ Object
A very hacky way to make sure that OpenTelemetry::Instrumentation::ActiveSupport::SpanSubscriber gets invoked first
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/opentelemetry/instrumentation/active_support/span_subscriber.rb', line 18 def self.subscribe( # rubocop:disable Metrics/AbcSize tracer, pattern, notification_payload_transform = nil, disallowed_notification_payload_keys = [] ) subscriber = OpenTelemetry::Instrumentation::ActiveSupport::SpanSubscriber.new( name: pattern, tracer: tracer, notification_payload_transform: notification_payload_transform, disallowed_notification_payload_keys: disallowed_notification_payload_keys ) subscriber_object = ::ActiveSupport::Notifications.subscribe(pattern, subscriber) ::ActiveSupport::Notifications.notifier.synchronize do if ::Rails::VERSION::MAJOR >= 6 s = ::ActiveSupport::Notifications.notifier.instance_variable_get(:@string_subscribers)[pattern].pop ::ActiveSupport::Notifications.notifier.instance_variable_get(:@string_subscribers)[pattern].unshift(s) else s = ::ActiveSupport::Notifications.notifier.instance_variable_get(:@subscribers).pop ::ActiveSupport::Notifications.notifier.instance_variable_get(:@subscribers).unshift(s) end end subscriber_object end |