global
def print_trace!(all: false, max: 5)
def print_trace!(all: false, max: 5) if @trace.empty? @loog.debug('GitHub API trace is empty') else grouped = @trace.select { |e| e[:duration] > 0.05 || all }.group_by do |entry| uri = URI.parse(entry[:url]) query = uri.query query = "?#{query.ellipsized(40)}" if query "#{uri.scheme}://#{uri.host}#{uri.path}#{query}" end message = grouped .sort_by { |_path, entries| -entries.count } .map do |path, entries| [ ' ', path.gsub(%r{^https://api.github.com/}, '/'), ': ', entries.count, " (#{entries.sum { |e| e[:duration] }.seconds})" ].join end .take(max) .join("\n") @loog.info( "GitHub API trace (#{grouped.count} URLs vs #{@trace.count} requests, " \ "#{@origin.rate_limit!.remaining} quota left):\n#{message}" ) @trace.clear end end