Class: Labkit::Tracing::Rails::ActiveRecordSubscriber
- Inherits:
-
Object
- Object
- Labkit::Tracing::Rails::ActiveRecordSubscriber
- Includes:
- RailsCommon
- Defined in:
- lib/labkit/tracing/rails/active_record_subscriber.rb
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
Methods included from Common
#in_tracing_span, #kv_tags_for_exception, #log_exception_on_span, #postnotify_span, #tracer
Class Method Details
.instrument ⇒ Object
Instruments Rails ActiveRecord events for opentracing. Returns a lambda, which, when called will unsubscribe from the notifications
15 16 17 18 19 20 21 22 23 24 |
# File 'lib/labkit/tracing/rails/active_record_subscriber.rb', line 15 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
27 28 29 |
# File 'lib/labkit/tracing/rails/active_record_subscriber.rb', line 27 def notify(start, finish, payload) generate_span_for_notification(notification_name(payload), start, finish, payload, (payload)) end |