From 116a838260f9c149c78807df88cc0035e81e7dc3 Mon Sep 17 00:00:00 2001 From: Geremia Taglialatela Date: Mon, 22 Jan 2024 16:17:28 +0100 Subject: [PATCH] Fix instrumentation log - Extract log format to a constant - Fix error when URL is a frozen string literal - Use `map.join` instead of `inject.join.chomp` - Use a formatted string --- .rubocop_todo.yml | 6 +++--- lib/hawk/http/instrumentation.rb | 19 ++++++++++++------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index fc021e5..18267fa 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -137,15 +137,15 @@ Style/FetchEnvVar: # SupportedStyles: format, sprintf, percent Style/FormatString: Exclude: - - 'lib/hawk/http/instrumentation.rb' - 'lib/hawk/rake/default_task.rb' # This cop supports safe autocorrection (--autocorrect). -# Configuration parameters: MaxUnannotatedPlaceholdersAllowed, AllowedMethods, AllowedPatterns. +# Configuration parameters: EnforcedStyle, MaxUnannotatedPlaceholdersAllowed, AllowedMethods, AllowedPatterns. # SupportedStyles: annotated, template, unannotated # AllowedMethods: redirect Style/FormatStringToken: - EnforcedStyle: unannotated + Exclude: + - 'lib/hawk/rake/default_task.rb' # This cop supports safe autocorrection (--autocorrect). # Configuration parameters: MinBodyLength, AllowConsecutiveConditionals. diff --git a/lib/hawk/http/instrumentation.rb b/lib/hawk/http/instrumentation.rb index e3c63ed..862958a 100644 --- a/lib/hawk/http/instrumentation.rb +++ b/lib/hawk/http/instrumentation.rb @@ -23,6 +23,8 @@ def self.suppress_verbose_output(value = nil) end module Basic + LOG_FORMAT = ">> \033[1mHawk %s: %s %s (%.2fms), cache %s\033[0m\n" + def instrument(type, payload) if Hawk::HTTP::Instrumentation.suppress_verbose_output yield payload @@ -31,16 +33,19 @@ def instrument(type, payload) ret = yield payload elapsed = (Process.clock_gettime(Process::CLOCK_MONOTONIC) - start) * 1000 - url = payload[:url].to_s + url = payload[:url].to_s.dup if payload[:params].present? - url << '?' << payload[:params].inject('') { |s, (k, v)| s << [k, '=', v, '&'].join }.chomp('&') + url << '?' << payload[:params].map { |k, v| "#{k}=#{v}" }.join('&') end - $stderr.printf ">> \033[1mHawk #{type}: #{payload[:method]} %s (%.2fms), cache %s\033[0m\n" % [ - CGI.unescape(url), - elapsed, - payload[:cached] ? 'HIT' : 'MISS' - ] + $stderr.printf format( + LOG_FORMAT, + type: type, + method: payload[:method], + url: CGI.unescape(url), + elapsed: elapsed, + cached: payload[:cached] ? 'HIT' : 'MISS' + ) ret end