Module: OpenTelemetry::Instrumentation::ActionView

Defined in:
lib/opentelemetry/instrumentation/action_view.rb,
lib/opentelemetry/instrumentation/action_view/railtie.rb,
lib/opentelemetry/instrumentation/action_view/version.rb,
lib/opentelemetry/instrumentation/action_view/instrumentation.rb,
lib/opentelemetry/instrumentation/action_view/span_subscriber.rb

Overview

rubocop:disable Style/Documentation

Defined Under Namespace

Classes: Instrumentation, Railtie, SpanSubscriber

Constant Summary collapse

SUBSCRIPTIONS =
%w[
  render_template.action_view
  render_partial.action_view
  render_collection.action_view
].freeze
VERSION =
'0.1.3'

Class Method Summary collapse

Class Method Details

.subscribe(pattern = nil, callable = nil) ⇒ Object

A very hacky way to make sure that OpenTelemetry::Instrumentation::ActionView::SpanSubscriber gets invoked first



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/opentelemetry/instrumentation/action_view/span_subscriber.rb', line 17

def self.subscribe(pattern = nil, callable = nil)
  ActiveSupport::Notifications.subscribe(pattern, callable)
  ::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
end