class ScoutApm::Instruments::Moped
Attributes
context[R]
Public Class Methods
new(context)
click to toggle source
# File lib/scout_apm/instruments/moped.rb, line 6 def initialize(context) @context = context @installed = false end
Public Instance Methods
install()
click to toggle source
# File lib/scout_apm/instruments/moped.rb, line 19 def install if defined?(::Moped) @installed = true logger.info "Instrumenting Moped" ::Moped::Node.class_eval do include ScoutApm::Tracer def process_with_scout_instruments(operation, &callback) if operation.respond_to?(:collection) collection = operation.collection name = "Process/#{collection}/#{operation.class.to_s.split('::').last}" self.class.instrument("MongoDB", name, :annotate_layer => { :query => scout_sanitize_log(operation.log_inspect) }) do process_without_scout_instruments(operation, &callback) end end end alias_method :process_without_scout_instruments, :process alias_method :process, :process_with_scout_instruments # replaces values w/ ? def scout_sanitize_log(log) return nil if log.length > 1000 # safeguard - don't sanitize large SQL statements log.gsub(/(=>")((?:[^"]|"")*)"/) do $1 + '?' + '"' end end end end end
installed?()
click to toggle source
# File lib/scout_apm/instruments/moped.rb, line 15 def installed? @installed end
logger()
click to toggle source
# File lib/scout_apm/instruments/moped.rb, line 11 def logger context.logger end
process_with_scout_instruments(operation, &callback)
click to toggle source
# File lib/scout_apm/instruments/moped.rb, line 28 def process_with_scout_instruments(operation, &callback) if operation.respond_to?(:collection) collection = operation.collection name = "Process/#{collection}/#{operation.class.to_s.split('::').last}" self.class.instrument("MongoDB", name, :annotate_layer => { :query => scout_sanitize_log(operation.log_inspect) }) do process_without_scout_instruments(operation, &callback) end end end
scout_sanitize_log(log)
click to toggle source
replaces values w/ ?
# File lib/scout_apm/instruments/moped.rb, line 41 def scout_sanitize_log(log) return nil if log.length > 1000 # safeguard - don't sanitize large SQL statements log.gsub(/(=>")((?:[^"]|"")*)"/) do $1 + '?' + '"' end end