Method: ActiveRecord::Explain#exec_explain

Defined in:
activerecord/lib/active_record/explain.rb

#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 'activerecord/lib/active_record/explain.rb', line 19

def exec_explain(queries, options = []) # :nodoc:
  str = with_connection do |c|
    queries.map do |sql, binds|
      msg = +"#{build_explain_clause(c, options)} #{sql}"
      unless binds.empty?
        msg << " "
        msg << binds.map { |attr| render_bind(c, attr) }.inspect
      end
      msg << "\n"
      msg << c.explain(sql, binds, options)
    end.join("\n")
  end
  # Overriding inspect to be more human readable, especially in the console.
  def str.inspect
    self
  end

  str
end