lib/honeybadger/notification_subscriber.rb in honeybadger-5.13.0 vs lib/honeybadger/notification_subscriber.rb in honeybadger-5.13.1
- old
+ new
@@ -1,17 +1,18 @@
require 'honeybadger/instrumentation_helper'
+require 'honeybadger/util/sql'
module Honeybadger
class NotificationSubscriber
def start(name, id, payload)
@start_time = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC)
end
def finish(name, id, payload)
@finish_time = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC)
- return unless process?(name)
+ return unless process?(name, payload)
payload = {
instrumenter_id: id,
duration: ((@finish_time - @start_time) * 1000).round(2)
}.merge(format_payload(payload).compact)
@@ -21,11 +22,11 @@
def record(name, payload)
Honeybadger.event(name, payload)
end
- def process?(event)
+ def process?(event, payload)
true
end
def format_payload(payload)
payload
@@ -56,12 +57,18 @@
end
class ActiveRecordSubscriber < NotificationSubscriber
def format_payload(payload)
{
- query: payload[:sql].to_s.gsub(/\s+/, ' ').strip,
+ query: Util::SQL.obfuscate(payload[:sql], payload[:connection].adapter_name),
async: payload[:async]
}
+ end
+
+ def process?(event, payload)
+ return false if payload[:name] == "SCHEMA"
+ return false if payload[:sql]&.match?(/^(begin|commit)( transaction)?$/i)
+ true
end
end
class ActiveJobSubscriber < NotificationSubscriber
def format_payload(payload)