how to I see SQL trace when using (a) rails console & (b) running rspec tests???


I’d like to know how to monitor the SQL calls (from ActiveRecord) for both the cases:
(a) using rails console [development mode], and
(b) running rspec tests [test mode]

How can I do this? For item (a) I recollect previously I could just run up a “./script/server” and see this whilst using “./script/console” however it does not seem to be working currently for me.


Not sure about (b), but for (a) put this in your ~/.irbrc

# Log to STDOUT if in Rails
if ENV.include?('RAILS_ENV') && !Object.const_defined?('RAILS_DEFAULT_LOGGER')
   require 'logger'

(b) running rspec tests [test mode]

Not sure about (b), but for (a) put this in your ~/.irbrc

For (b), gem install assert_efficient_sql, then put this around your RSpec money-line:

   inspect_sql :verbose => true do

It will spew out your SQL statements, and their EXPLAIN results, so you can see the bottlenecks.

It only works for MySQL tho...

Also, put in require 'assert_efficient_sql', and this:

Spec::Runner.configure do |c|
   c.include Test::Unit::Assertions