class Atatus::Spies::SequelSpy
@api private
Constants
- ACTION
- TYPE
Public Class Methods
summarizer()
click to toggle source
# File lib/atatus/spies/sequel.rb, line 30 def self.summarizer @summarizer ||= Sql.summarizer end
Public Instance Methods
install()
click to toggle source
# File lib/atatus/spies/sequel.rb, line 34 def install require 'sequel/database/logging' if defined?(::Sequel) && defined?(::Sequel::Database) ::Sequel::Database.class_eval do alias log_connection_yield_without_apm log_connection_yield def log_connection_yield(sql, connection, args = nil, &block) unless Atatus.current_transaction return log_connection_yield_without_apm( sql, connection, args, &block ) end subtype = database_type.to_s name = Atatus::Spies::SequelSpy.summarizer.summarize sql context = Atatus::Span::Context.new( db: { statement: sql, type: 'sql', user: opts[:user] }, destination: { name: subtype, resource: subtype, type: TYPE } ) span = Atatus.start_span( name, TYPE, subtype: subtype, action: ACTION, context: context ) yield.tap do |result| if name =~ /^(UPDATE|DELETE)/ if connection.respond_to?(:changes) span.context.db.rows_affected = connection.changes elsif result.is_a?(Integer) span.context.db.rows_affected = result end end end ensure Atatus.end_span end end
log_connection_yield(sql, connection, args = nil) { || ... }
click to toggle source
# File lib/atatus/spies/sequel.rb, line 42 def log_connection_yield(sql, connection, args = nil, &block) unless Atatus.current_transaction return log_connection_yield_without_apm( sql, connection, args, &block ) end subtype = database_type.to_s name = Atatus::Spies::SequelSpy.summarizer.summarize sql context = Atatus::Span::Context.new( db: { statement: sql, type: 'sql', user: opts[:user] }, destination: { name: subtype, resource: subtype, type: TYPE } ) span = Atatus.start_span( name, TYPE, subtype: subtype, action: ACTION, context: context ) yield.tap do |result| if name =~ /^(UPDATE|DELETE)/ if connection.respond_to?(:changes) span.context.db.rows_affected = connection.changes elsif result.is_a?(Integer) span.context.db.rows_affected = result end end