module ActiveRecordExplainAnalyze::Relation
Constants
- EXPLAIN_FORMATS
Public Instance Methods
exec_explain_with_options(queries, analyze:, format:)
click to toggle source
# File lib/activerecord-explain-analyze/relation.rb, line 24 def exec_explain_with_options(queries, analyze:, format:) str = queries.map do |sql, binds| msg = "EXPLAIN for: #{sql}\n".dup msg << connection.explain_with_options(sql, binds, analyze, format) end.join("\n") # Overriding inspect to be more human readable, especially in the console. def str.inspect self end str end
explain(analyze: false, format: :text)
click to toggle source
# File lib/activerecord-explain-analyze/relation.rb, line 10 def explain(analyze: false, format: :text) format = format.to_s.upcase unless EXPLAIN_FORMATS.include?(format) raise ArgumentError, "format must be one of: #{EXPLAIN_FORMATS.join(', ')}" end queries = collecting_queries_for_explain { exec_queries } if analyze || format != "TEXT" exec_explain_with_options(queries, analyze: analyze, format: format) else exec_explain(queries) end end