Как показать SQL-запросы в консоли Rails?

Когда я запускаю запросы (например, MyModel.where(...) или record.associated_things ) в консоли, как я могу увидеть фактические запросы к базе данных, чтобы я мог лучше понять, что происходит?

Rails 3+

Введите эту строку в консоли:

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

Рельсы 2

Введите эту строку в консоли:

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

В Rails 3+ вы можете использовать метод to_sql ActiveRecord :: Relation:

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

В Rails 4 .explain метод .explain .
( .to_sql тоже работает, но не показывается)

 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 

С недавнего времени вы можете использовать это:

https://github.com/dejan/rails_panel

Он состоит из дополнения панели консоли разработчика для chrome и gem-файла, которые необходимо добавить в Gemfile вашего приложения следующим образом:

 group :development do gem 'meta_request' end 

Затем снова запустите:

 bundle install 

Перезапустите приложение, откройте его и запустите консоль разработчика, и вы увидите следующее: введите описание изображения здесь

Давайте будем гением компьютера.