Class: Labkit::Tracing::Rails::ActiveRecordSubscriber
- Inherits:
-
Object
- Object
- Labkit::Tracing::Rails::ActiveRecordSubscriber
- Includes:
- RailsCommon
- Defined in:
- lib/labkit/tracing/rails/active_record_subscriber.rb
Overview
ActiveRecordSubscriber bridges active record notifications to the distributed tracing subsystem
Constant Summary collapse
- ACTIVE_RECORD_NOTIFICATION_TOPIC =
"sql.active_record"
- OPERATION_NAME_PREFIX =
"active_record:"
- DEFAULT_OPERATION_NAME =
"sqlquery"
Class Method Summary collapse
-
.instrument ⇒ Object
Instruments Rails ActiveRecord events for opentracing.
Instance Method Summary collapse
-
#notify(start, finish, payload) ⇒ Object
For more information on the payloads: guides.rubyonrails.org/active_support_instrumentation.html.
Methods included from RailsCommon
#generate_span_for_notification
Class Method Details
.instrument ⇒ Object
Instruments Rails ActiveRecord events for opentracing. Returns a lambda, which, when called will unsubscribe from the notifications
17 18 19 20 21 22 23 24 25 26 |
# File 'lib/labkit/tracing/rails/active_record_subscriber.rb', line 17 def self.instrument subscriber = new subscription = ActiveSupport::Notifications.subscribe(ACTIVE_RECORD_NOTIFICATION_TOPIC) do |_, start, finish, _, payload| subscriber.notify(start, finish, payload) end create_unsubscriber [subscription] end |
Instance Method Details
#notify(start, finish, payload) ⇒ Object
For more information on the payloads: guides.rubyonrails.org/active_support_instrumentation.html
29 30 31 |
# File 'lib/labkit/tracing/rails/active_record_subscriber.rb', line 29 def notify(start, finish, payload) generate_span_for_notification(notification_name(payload), start, finish, payload, (payload)) end |