Skip to content

Commit e54b63e

Browse files
authored
refactor!: split out active support from rails gem (#880)
1 parent b57d1ec commit e54b63e

File tree

9 files changed

+19
-19
lines changed

9 files changed

+19
-19
lines changed

instrumentation/rails/lib/opentelemetry/instrumentation/rails/fanout.rb renamed to instrumentation/action_view/lib/opentelemetry/instrumentation/action_view/fanout.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
module OpenTelemetry
88
module Instrumentation
9-
module Rails
9+
module ActionView
1010
# This is a replacement for the default Fanout notifications queue, which adds special
1111
# handling around returned context from the SpanSubscriber notification handlers.
1212
# Used together, it allows us to trace arbitrary ActiveSupport::Notifications safely.

instrumentation/action_view/lib/opentelemetry/instrumentation/action_view/instrumentation.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,14 @@ class Instrumentation < OpenTelemetry::Instrumentation::Base
2222
Gem.loaded_specs['actionview'].version >= MINIMUM_VERSION
2323
end
2424

25+
option :disallowed_notification_payload_keys, default: [], validate: :array
26+
option :notification_payload_transform, default: nil, validate: :callable
27+
2528
private
2629

2730
def require_dependencies
31+
require_relative 'fanout'
32+
require_relative 'span_subscriber'
2833
require_relative 'railtie'
2934
end
3035
end

instrumentation/action_view/lib/opentelemetry/instrumentation/action_view/railtie.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@ module ActionView
1616
# This Railtie sets up subscriptions to relevant ActionView notifications
1717
class Railtie < ::Rails::Railtie
1818
config.before_initialize do
19-
OpenTelemetry::Instrumentation::Rails::Instrumentation.instance.install({})
19+
::ActiveSupport::Notifications.notifier = Fanout.new
2020
end
2121

2222
config.after_initialize do
2323
SUBSCRIPTIONS.each do |subscription_name|
24-
subscriber = OpenTelemetry::Instrumentation::Rails::SpanSubscriber.new(
24+
subscriber = OpenTelemetry::Instrumentation::ActionView::SpanSubscriber.new(
2525
name: subscription_name,
2626
tracer: ActionView::Instrumentation.instance.tracer
2727
)

instrumentation/rails/lib/opentelemetry/instrumentation/rails/span_subscriber.rb renamed to instrumentation/action_view/lib/opentelemetry/instrumentation/action_view/span_subscriber.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
module OpenTelemetry
88
module Instrumentation
9-
module Rails
9+
module ActionView
1010
# The SpanSubscriber is a special ActiveSupport::Notification subscription
1111
# handler which turns notifications into generic spans, taking care to handle
1212
# context appropriately.
@@ -50,7 +50,7 @@ def finish(_name, _id, payload) # rubocop:disable Metrics/AbcSize
5050
private
5151

5252
def instrumentation_config
53-
Rails::Instrumentation.instance.config
53+
ActionView::Instrumentation.instance.config
5454
end
5555

5656
def transform_payload(payload)

instrumentation/action_view/opentelemetry-instrumentation-action_view.gemspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ Gem::Specification.new do |spec|
3333
spec.add_development_dependency 'bundler', '>= 1.17'
3434
spec.add_development_dependency 'minitest', '~> 5.0'
3535
spec.add_development_dependency 'opentelemetry-sdk'
36+
spec.add_development_dependency 'rails'
3637
spec.add_development_dependency 'rake', '~> 12.3.3'
3738
spec.add_development_dependency 'rubocop', '~> 0.73.0'
3839
spec.add_development_dependency 'simplecov', '~> 0.17.1'

instrumentation/rails/test/opentelemetry/instrumentation/rails/fanout_test.rb renamed to instrumentation/action_view/test/opentelemetry/instrumentation/action_view/fanout_test.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,21 @@
66

77
require 'test_helper'
88

9-
describe OpenTelemetry::Instrumentation::Rails::Fanout do
10-
let(:tracer) { OpenTelemetry::Instrumentation::Rails::Instrumentation.instance.tracer }
9+
describe OpenTelemetry::Instrumentation::ActionView::Fanout do
10+
let(:tracer) { OpenTelemetry::Instrumentation::ActionView::Instrumentation.instance.tracer }
1111
let(:exporter) { EXPORTER }
1212
let(:spans) { exporter.finished_spans }
1313
let(:last_span) { spans.last }
1414
let(:span_subscriber) do
15-
OpenTelemetry::Instrumentation::Rails::SpanSubscriber.new(
15+
OpenTelemetry::Instrumentation::ActionView::SpanSubscriber.new(
1616
name: 'bar.foo',
1717
tracer: tracer
1818
)
1919
end
2020

2121
before do
2222
exporter.reset
23-
::ActiveSupport::Notifications.notifier = OpenTelemetry::Instrumentation::Rails::Fanout.new
23+
::ActiveSupport::Notifications.notifier = OpenTelemetry::Instrumentation::ActionView::Fanout.new
2424
end
2525

2626
it 'sorts span subscribers first' do

instrumentation/rails/test/opentelemetry/instrumentation/rails/span_subscriber_test.rb renamed to instrumentation/action_view/test/opentelemetry/instrumentation/action_view/span_subscriber_test.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66

77
require 'test_helper'
88

9-
describe OpenTelemetry::Instrumentation::Rails::SpanSubscriber do
10-
let(:instrumentation) { OpenTelemetry::Instrumentation::Rails::Instrumentation.instance }
9+
describe OpenTelemetry::Instrumentation::ActionView::SpanSubscriber do
10+
let(:instrumentation) { OpenTelemetry::Instrumentation::ActionView::Instrumentation.instance }
1111
let(:tracer) { instrumentation.tracer }
1212
let(:exporter) { EXPORTER }
1313
let(:last_span) { exporter.finished_spans.last }
1414
let(:subscriber) do
15-
OpenTelemetry::Instrumentation::Rails::SpanSubscriber.new(
15+
OpenTelemetry::Instrumentation::ActionView::SpanSubscriber.new(
1616
name: 'bar.foo',
1717
tracer: tracer
1818
)
@@ -30,7 +30,7 @@
3030
end
3131

3232
it 'uses the provided tracer' do
33-
subscriber = OpenTelemetry::Instrumentation::Rails::SpanSubscriber.new(
33+
subscriber = OpenTelemetry::Instrumentation::ActionView::SpanSubscriber.new(
3434
name: 'oh.hai',
3535
tracer: OpenTelemetry.tracer_provider.tracer('foo')
3636
)

instrumentation/rails/lib/opentelemetry/instrumentation/rails/instrumentation.rb

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,11 @@ class Instrumentation < OpenTelemetry::Instrumentation::Base
2323
end
2424

2525
option :enable_recognize_route, default: false, validate: :boolean
26-
option :disallowed_notification_payload_keys, default: [], validate: :array
27-
option :notification_payload_transform, default: nil, validate: :callable
2826

2927
private
3028

3129
def require_dependencies
3230
require_relative 'patches/action_controller/metal'
33-
require_relative 'fanout'
34-
require_relative 'span_subscriber'
3531
end
3632

3733
def require_railtie

instrumentation/rails/lib/opentelemetry/instrumentation/rails/railtie.rb

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ module Rails
1212
# the Rails application through its initialization hooks.
1313
class Railtie < ::Rails::Railtie
1414
config.before_initialize do |app|
15-
::ActiveSupport::Notifications.notifier = Fanout.new
16-
1715
OpenTelemetry::Instrumentation::ActiveRecord::Instrumentation.instance.install({})
1816
OpenTelemetry::Instrumentation::Rack::Instrumentation.instance.install({})
1917

0 commit comments

Comments
 (0)