Method: ActiveRecord::Explain#exec_explain

Defined in:
lib/active_record/explain.rb

#exec_explain(queries) ⇒ Object

Makes the adapter execute EXPLAIN for the tuples of queries and bindings. Returns a formatted string ready to be logged.



18
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 18

def exec_explain(queries) # :nodoc:
  str = queries.map do |sql, bind|
    [].tap do |msg|
      msg << "EXPLAIN for: #{sql}"
      unless bind.empty?
        bind_msg = bind.map {|col, val| [col.name, val]}.inspect
        msg.last << " #{bind_msg}"
      end
      msg << connection.explain(sql, bind)
    end.join("\n")
  end.join("\n")

  # Overriding inspect to be more human readable, specially in the console.
  def str.inspect
    self
  end

  str
end