lib/rorvswild.rb in rorvswild-0.0.5 vs lib/rorvswild.rb in rorvswild-0.0.6

- old
+ new

@@ -59,11 +59,11 @@ file, line, method = extract_file_and_line_from_call_stack(caller) # I can't figure out the exact location which triggered the query, so at least the SQL is logged. sql, file, line, method = payload[:sql], "Unknow", 0, "Unknow" if !file sql = payload[:sql] if runtime >= log_sql_threshold plan = explain(payload[:sql], payload[:binds]) if runtime >= explain_sql_threshold - queries << {file: file, line: line, method: method, sql: sql, plan: plan, runtime: runtime} + push_query(file: file, line: line, method: method, sql: sql, plan: plan, runtime: runtime, times: 1) rescue => exception log_error(exception) end def after_view_rendering(name, start, finish, id, payload) @@ -103,9 +103,22 @@ @queries end def views @views + end + + def push_query(query) + if query[:sql] || query[:plan] + queries << query + else + if hash = queries.find { |hash| hash[:line] == query[:line] && hash[:file] == query[:file] } + hash[:runtime] += query[:runtime] + hash[:times] += 1 + else + queries << query + end + end end def slowest_views views.values.sort { |h1, h2| h2[:runtime] <=> h1[:runtime] }[0, 25] end