Module: ValidateNumberOfQueries

Included in:
PerformanceValidations
Defined in:
lib/performance_promise/validations/number_of_db_queries.rb

Instance Method Summary collapse

Instance Method Details

#validate_makes(db_queries, render_time, makes) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/performance_promise/validations/number_of_db_queries.rb', line 2

def validate_makes(db_queries, render_time, makes)
  makes = makes.evaluate  # force evaluation of lazy evaluated promise

  passes = (db_queries.length <= makes)
  error_message = ''
  backtrace = []

  if passes
      return passes, error_message, backtrace
  end

  guessed_order = Utils.guess_order(db_queries)
  error_message = ":makes => #{guessed_order}"
  backtrace = []
  Utils.summarize_queries(db_queries).each do |db_query, count|
    statement = "#{count} x #{db_query[:sql]}"
    backtrace << statement
    db_query[:trace].each do |trace|
      if trace.starts_with?('app')
        file, line_number = trace.split(':')
        trace = "    |_" + File.read(file).split("\n")[line_number.to_i - 1].strip + ' (' + trace + ')'
      end
      backtrace << trace
    end
  end

  return passes, error_message, backtrace
end