Sha256: 31a4e3df137814a65b6ae6e1773dad6cdedb36f4069cad9dc86cafe278eb9f4c
Contents?: true
Size: 1.47 KB
Versions: 1
Compression:
Stored size: 1.47 KB
Contents
require 'ddtrace/ext/sql' require 'ddtrace/contrib/rails/utils' module Datadog module Contrib module Rails # TODO[manu]: write docs module ActiveRecord def self.instrument # subscribe when the active record query has been processed ::ActiveSupport::Notifications.subscribe('sql.active_record') do |*args| sql(*args) end end def self.sql(_name, start, finish, _id, payload) tracer = ::Rails.configuration.datadog_trace.fetch(:tracer) database_service = ::Rails.configuration.datadog_trace.fetch(:default_database_service) adapter_name = ::ActiveRecord::Base.connection_config[:adapter] adapter_name = Datadog::Contrib::Rails::Utils.normalize_vendor(adapter_name) span_type = Datadog::Ext::SQL::TYPE span = tracer.trace( "#{adapter_name}.query", resource: payload.fetch(:sql), service: database_service, span_type: span_type ) # the span should have the query ONLY in the Resource attribute, # so that the ``sql.query`` tag will be set in the agent with an # obfuscated version span.span_type = Datadog::Ext::SQL::TYPE span.set_tag('rails.db.vendor', adapter_name) span.start_time = start span.finish_at(finish) rescue StandardError => e Datadog::Tracer.log.error(e.message) end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ddtrace-0.3.1 | lib/ddtrace/contrib/rails/active_record.rb |