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)