Class: Appsignal::EventFormatter::ActiveRecord::SqlFormatter
- Inherits:
-
Appsignal::EventFormatter
- Object
- Appsignal::EventFormatter
- Appsignal::EventFormatter::ActiveRecord::SqlFormatter
- Defined in:
- lib/appsignal/event_formatter/active_record/sql_formatter.rb
Constant Summary collapse
- SINGLE_QUOTED_STRING =
/'(.?|[^']).*'/.freeze
- DOUBLE_QUOTED_STRING =
/"(.?|[^"]).*"/.freeze
- IN_OPERATOR_CONTENT =
/(IN \()[^SELECT][^\)]+(\))/.freeze
- NUMERIC =
/\d*\.?\d+/.freeze
- REPLACEMENT =
'?'.freeze
- IN_REPLACEMENT =
'\1?\2'.freeze
- SCHEMA =
'SCHEMA'.freeze
Instance Attribute Summary collapse
-
#adapter_uses_double_quoted_table_names ⇒ Object
readonly
Returns the value of attribute adapter_uses_double_quoted_table_names.
Instance Method Summary collapse
- #format(payload) ⇒ Object
-
#initialize ⇒ SqlFormatter
constructor
A new instance of SqlFormatter.
Methods inherited from Appsignal::EventFormatter
format, formatter_classes, formatters, initialize_formatters, register, registered?, unregister
Constructor Details
#initialize ⇒ SqlFormatter
Returns a new instance of SqlFormatter.
17 18 19 20 21 22 23 |
# File 'lib/appsignal/event_formatter/active_record/sql_formatter.rb', line 17 def initialize @connection_config = connection_config @adapter_uses_double_quoted_table_names = adapter_uses_double_quoted_table_names? rescue ::ActiveRecord::ConnectionNotEstablished Appsignal::EventFormatter.unregister('sql.active_record', self.class) Appsignal.logger.error('Error while getting ActiveRecord connection info, unregistering sql.active_record event formatter') end |
Instance Attribute Details
#adapter_uses_double_quoted_table_names ⇒ Object (readonly)
Returns the value of attribute adapter_uses_double_quoted_table_names.
15 16 17 |
# File 'lib/appsignal/event_formatter/active_record/sql_formatter.rb', line 15 def adapter_uses_double_quoted_table_names @adapter_uses_double_quoted_table_names end |
Instance Method Details
#format(payload) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/appsignal/event_formatter/active_record/sql_formatter.rb', line 25 def format(payload) return nil if schema_query?(payload) || !payload[:sql] sql_string = payload[:sql].dup unless adapter_uses_double_quoted_table_names sql_string.gsub!(DOUBLE_QUOTED_STRING, REPLACEMENT) end sql_string.gsub!(SINGLE_QUOTED_STRING, REPLACEMENT) sql_string.gsub!(IN_OPERATOR_CONTENT, IN_REPLACEMENT) sql_string.gsub!(NUMERIC, REPLACEMENT) [payload[:name], sql_string] end |