Module: ActiveRecord::Explain
Instance Method Summary collapse
-
#collecting_queries_for_explain ⇒ Object
Executes the block with the collect flag enabled.
-
#exec_explain(queries) ⇒ 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) ⇒ 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 |
# File 'lib/active_record/explain.rb', line 19 def exec_explain(queries) # :nodoc: str = queries.map do |sql, binds| msg = "EXPLAIN for: #{sql}".dup unless binds.empty? msg << " " msg << binds.map { |attr| render_bind(attr) }.inspect end msg << "\n" msg << connection.explain(sql, binds) end.join("\n") # Overriding inspect to be more human readable, especially in the console. def str.inspect self end str end |