Module: ActiveRecord::Explain
Instance Method Summary collapse
-
#collecting_queries_for_explain ⇒ Object
Executes the block with the collect flag enabled.
-
#exec_explain(queries, options = []) ⇒ Object
Makes the adapter execute EXPLAIN for the tuples of queries and bindings.
Instance Method Details
#collecting_queries_for_explain ⇒ Object
Executes the block with the collect flag enabled. Queries are collected asynchronously by the subscriber and returned.
9 10 11 12 13 14 15 |
# File 'lib/active_record/explain.rb', line 9 def collecting_queries_for_explain # :nodoc: ExplainRegistry.collect = true yield ExplainRegistry.queries ensure ExplainRegistry.reset end |
#exec_explain(queries, options = []) ⇒ Object
Makes the adapter execute EXPLAIN for the tuples of queries and bindings. Returns a formatted string ready to be logged.
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/active_record/explain.rb', line 19 def exec_explain(queries, = []) # :nodoc: str = with_connection do |c| queries.map do |sql, binds| msg = +"#{build_explain_clause(c, )} #{sql}" unless binds.empty? msg << " " msg << binds.map { |attr| render_bind(c, attr) }.inspect end msg << "\n" msg << c.explain(sql, binds, ) end.join("\n") end # Overriding inspect to be more human readable, especially in the console. def str.inspect self end str end |