Class: Honeybadger::TraceCleaner::ActiveRecord

Inherits:
Base
  • Object
show all
Defined in:
lib/honeybadger/trace.rb

Constant Summary collapse

Schema =
"SCHEMA".freeze
SchemaMigrations =
/schema_migrations/.freeze
EscapedQuotes =
/(\\"|\\')/.freeze
SQuotedData =
/'(?:[^']|'')*'/.freeze
DQuotedData =
/"(?:[^"]|"")*"/.freeze
NumericData =
/\b\d+\b/.freeze
Newline =
/\n/.freeze
Replacement =
"?".freeze
EmptyReplacement =
"".freeze
DoubleQuoters =
/(postgres|sqlite|postgis)/.freeze

Instance Attribute Summary

Attributes inherited from Base

#event

Instance Method Summary collapse

Methods inherited from Base

#initialize, #payload, #to_a, #to_h

Constructor Details

This class inherits a constructor from Honeybadger::TraceCleaner::Base

Instance Method Details

#render?Boolean

Returns:

  • (Boolean)


173
174
175
# File 'lib/honeybadger/trace.rb', line 173

def render?
  event.payload[:name] != Schema && !event.payload[:sql].match(SchemaMigrations)
end

#to_sObject



177
178
179
180
181
182
183
# File 'lib/honeybadger/trace.rb', line 177

def to_s
  return "Super long query" if event.payload[:sql].length > 1024
  sql = event.payload[:sql]
  sql = sql.gsub(EscapedQuotes, EmptyReplacement).gsub(SQuotedData, Replacement)
  sql = sql.gsub(DQuotedData, Replacement) unless ::ActiveRecord::Base.connection_pool.spec.config[:adapter] =~ DoubleQuoters
  sql.gsub(NumericData, Replacement).gsub(Newline, EmptyReplacement).squeeze(' ')
end