Come mostrare le query SQL eseguite nella console di Rails?

Quando MyModel.where(...) query (ad es. MyModel.where(...) o record.associated_things ) nella console, come posso visualizzare le query del database che vengono eseguite in modo da ottenere una maggiore comprensione di ciò che sta accadendo?

Rails 3+

Inserisci questa riga nella console:

 ActiveRecord::Base.logger = Logger.new(STDOUT) 

Rotaie 2

Inserisci questa riga nella console:

 ActiveRecord::Base.connection.instance_variable_set :@logger, Logger.new(STDOUT) 

In Rails 3+ è ansible utilizzare il metodo to_sql di ActiveRecord :: Relation:

 User.where(:id => 3).to_sql #=> "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"id\" = 3" 

Esiste un metodo .explain in Rails 4.
( .to_sql funziona anche, ma non mostrerà include)

 Category.includes(:products).explain => EXPLAIN for: SELECT "categories".* FROM "categories" 0|0|0|SCAN TABLE categories EXPLAIN for: SELECT "categories_products".* FROM "categories_products" WHERE "categories_products"."category_id" IN (1, 2) 0|0|0|SCAN TABLE categories_products EXPLAIN for: SELECT "products".* FROM "products" WHERE "products"."id" IN (1, 2, 3, 4, 5, 6, 7) 0|0|0|SEARCH TABLE products USING INTEGER PRIMARY KEY (rowid=?) 0|0|0|EXECUTE LIST SUBQUERY 1 

Da poco tempo, puoi usare questo:

https://github.com/dejan/rails_panel

Consiste del componente aggiuntivo del pannello della console di sviluppo per Chrome e del file gem che deve essere aggiunto al Gemfile dell’applicazione in questo modo:

 group :development do gem 'meta_request' end 

Quindi esegui di nuovo:

 bundle install 

Riavvia la tua applicazione, aprila e avvia la console per sviluppatori, e dovresti vederla in questo modo: inserisci la descrizione dell'immagine qui