class N1Finder::Logger

Logs given N+1 queries

Public Instance Methods

log(n1_queries) click to toggle source

Logs N+1 queries

@param [Array] n1_queries

@return [void]

# File lib/n_1_finder/logger.rb, line 12
def log(n1_queries)
  n1_queries.each do |n1_query|
    logger.debug("\n" + message(n1_query) + "\n")
  end
end

Private Instance Methods

colored(string) click to toggle source
# File lib/n_1_finder/logger.rb, line 50
def colored(string)
  color = "\e[33m" # yellow
  reset = "\e[0m"

  "#{color}#{string}#{reset}"
end
colorize?() click to toggle source
# File lib/n_1_finder/logger.rb, line 45
def colorize?
  log_filename = logger.instance_variable_get(:@logdev).filename
  log_filename.nil? || log_filename == 'STDOUT'
end
formatted(string) click to toggle source
# File lib/n_1_finder/logger.rb, line 41
def formatted(string)
  colorize? ? colored(string) : string
end
logger() click to toggle source
# File lib/n_1_finder/logger.rb, line 20
def logger
  @logger ||= N1Finder.logger
end
message(n1_query) click to toggle source
# File lib/n_1_finder/logger.rb, line 24
  def message(n1_query)
    title = formatted('N+1 QUERY DETECTED:')
    query_title = formatted('QUERY:')
    line_title = formatted('LINE:')
    count_title = formatted('QUERIES COUNT:')
    queries_title = formatted('ORIGINAL QUERIES:')

    <<-MESSAGE.gsub(' ' * 6, '')
      #{title}
        #{query_title} #{n1_query.query}
        #{line_title} #{n1_query.line}
        #{count_title} #{n1_query.original_queries.count}
        #{queries_title}
          #{n1_query.original_queries.join("\n    ")}
    MESSAGE
  end