How can I retrieve the SQL during each model action?

Hi,

I would like to know for each running model action, how can I retrieve the SQL running behind? I don't want to scan log each time for the sql running behind. E.g. post.find(:all,:conditions=>{:id=>'1'}

I wanna debug the sql generated behind, is that other shorthand function like post.find().show_sql() that enable us to view what's SQL generated ?

Thanks

xeon wrote:

Hi,

I would like to know for each running model action, how can I retrieve the SQL running behind? I don't want to scan log each time for the sql running behind. E.g. post.find(:all,:conditions=>{:id=>'1'}

I wanna debug the sql generated behind, is that other shorthand function like post.find().show_sql() that enable us to view what's SQL generated ?

That sounds like a good idea. Perhaps a :log => :instance_variable_name option to find.

One alternative is the query_trace plugin that displays a backtrace for each query, so that the log shows what line of code is associated with each query.

Hi,

I would like to know for each running model action, how can I retrieve the SQL running behind? I don't want to scan log each time for the sql running behind. E.g. post.find(:all,:conditions=>{:id=>'1'}

I wanna debug the sql generated behind, is that other shorthand function like post.find().show_sql() that enable us to view what's SQL generated ?

Thanks

If you are using the console, you can type:

set_logger_to Logger.new(STDOUT)

An output example:

Page.find(:all, :conditions=>{:id=>1})

  SQL (0.000093) SET SQL_AUTO_IS_NULL=0   Page Load (0.000112) SELECT * FROM `pages` WHERE (`pages`.`id` = 1)   Page Columns (0.001215) SHOW FIELDS FROM `pages` => [#<Page id: 1, ....

Thanks for the valuable reply. But I found myself most comfortable with: 1) Netbeans debugging 2) ruby-debug (#54 Debugging with ruby-debug - RailsCasts debug) 3) rdebug with textmate

That's sum out my findings. Hope it helps. But, personally speaking, it will glad to have a shorthand function for developer to dump out the sql generated on the fly, as it effectively save time for browsing the log, run the debugger in console...cheers!