Module: Utils

Defined in:
lib/performance_promise/utils.rb

Class Method Summary collapse

Class Method Details

.colored(color, string) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/performance_promise/utils.rb', line 35

def self.colored(color, string)
  color =
    case color
    when :red
      "\e[31m"
    when :green
      "\e[32m"
    when :cyan
      "\e[36m"
    end
  end_color = "\e[0m"
  "#{color}#{string}#{end_color}"
end

.guess_order(db_queries) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/performance_promise/utils.rb', line 10

def self.guess_order(db_queries)
  order = []
  single_queries = 0
  queries_with_count = summarize_queries(db_queries)
  queries_with_count.each do |query, count|
    if count == 1
      single_queries += 1
    else
      if (lookup_field = /WHERE .*"(.*?_id)" = \?/.match(query[:sql]))
        klass = lookup_field[1].humanize
        order << "#{klass}.N.queries"
      else
        order << "n(???)"
      end
    end
  end

  if single_queries == 1
    order << '1.query'
  elsif single_queries > 1
    order << "#{single_queries}.queries"
  end
  order.join(" + ")
end

.summarize_queries(db_queries) ⇒ Object



2
3
4
5
6
7
8
# File 'lib/performance_promise/utils.rb', line 2

def self.summarize_queries(db_queries)
  summary = Hash.new(0)
  db_queries.each do |query|
    summary[query.except(:duration)] += 1
  end
  summary
end