Module: ExplainQuery::Watcher

Defined in:
lib/explain-query/explain-query.rb

Instance Method Summary collapse

Instance Method Details

#explainObject

Raises:

  • (ArgumentError)


31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/explain-query/explain-query.rb', line 31

def explain
  raise(ArgumentError, "No block given") if !block_given?
  begin
    ActiveRecord::ConnectionAdapters::MysqlAdapter.send(:alias_method, :select_without_explain, :select)
    ActiveRecord::ConnectionAdapters::MysqlAdapter.send(:alias_method, :select, :select_with_explain)
    result = yield
  ensure
    ActiveRecord::ConnectionAdapters::MysqlAdapter.send(:alias_method, :select_with_explain, :select)
    ActiveRecord::ConnectionAdapters::MysqlAdapter.send(:alias_method, :select, :select_without_explain)
  end

  result
end