From b48abc00191b2a226587180c6f253617c50ebccf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Mendon=C3=A7a=20Fran=C3=A7a?= Date: Wed, 5 Oct 2022 18:33:17 +0000 Subject: [PATCH] Remove complexity from the custom query logs We only have two specific implementations, so we don't need to create generic formatter implementations for this feature. --- activerecord/lib/active_record/query_logs.rb | 7 ++-- .../lib/active_record/query_logs_formatter.rb | 39 ++++++++++--------- 2 files changed, 25 insertions(+), 21 deletions(-) diff --git a/activerecord/lib/active_record/query_logs.rb b/activerecord/lib/active_record/query_logs.rb index d254e0833c6ea..573b34beec80d 100644 --- a/activerecord/lib/active_record/query_logs.rb +++ b/activerecord/lib/active_record/query_logs.rb @@ -94,9 +94,9 @@ def clear_cache # :nodoc: def update_formatter(format) self.tags_formatter = case format when :legacy - Formatter.new(key_value_separator: ":") + LegacyFormatter.new when :sqlcommenter - QuotingFormatter.new(key_value_separator: "=") + SQLCommenter.new else raise ArgumentError, "Formatter is unsupported: #{formatter}" end @@ -148,7 +148,8 @@ def tag_content else handler end - "#{key}#{self.formatter.key_value_separator}#{self.formatter.format_value(val)}" unless val.nil? + + self.formatter.format(key, val) unless val.nil? end.join(",") end end diff --git a/activerecord/lib/active_record/query_logs_formatter.rb b/activerecord/lib/active_record/query_logs_formatter.rb index 462b59c92cfa6..5d950c6a0bc96 100644 --- a/activerecord/lib/active_record/query_logs_formatter.rb +++ b/activerecord/lib/active_record/query_logs_formatter.rb @@ -2,30 +2,33 @@ module ActiveRecord module QueryLogs - class Formatter # :nodoc: - attr_reader :key_value_separator - - # @param [String] key_value_separator: indicates the string used for - # separating keys and values. - # - # @param [Symbol] quote_values: indicates how values will be formatted (eg: - # in single quotes, not quoted at all, etc) - def initialize(key_value_separator:) - @key_value_separator = key_value_separator + class LegacyFormatter # :nodoc: + def initialize + @key_value_separator = ":" end - # @param [String-coercible] value - # @return [String] The formatted value that will be used in our key-value - # pairs. - def format_value(value) - value + # Formats the key value pairs into a string. + def format(key, value) + "#{key}#{key_value_separator}#{format_value(value)}" end + + private + attr_reader :key_value_separator + + def format_value(value) + value + end end - class QuotingFormatter < Formatter # :nodoc: - def format_value(value) - "'#{value.to_s.gsub("'", "\\\\'")}'" + class SQLCommenter < LegacyFormatter # :nodoc: + def initialize + @key_value_separator = "=" end + + private + def format_value(value) + "'#{value.to_s.gsub("'", "\\\\'")}'" + end end end end