Как показать, что SQL-запросы выполняются в консоли Rails? - PullRequest
89 голосов
/ 29 мая 2010

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

Ответы [ 4 ]

211 голосов
/ 29 мая 2010

Рельсы 3 +

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

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

Рельсы 2

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

ActiveRecord::Base.connection.instance_variable_set :@logger, Logger.new(STDOUT)
26 голосов
/ 18 декабря 2014

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

User.where(:id => 3).to_sql
#=> "SELECT \"users\".* FROM \"users\"  WHERE \"users\".\"id\" = 3"
20 голосов
/ 01 февраля 2016

В Rails 4 есть метод .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
0 голосов
/ 12 ноября 2017

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

https://github.com/dejan/rails_panel

Он состоит из надстройки панели консоли разработчика для Chrome и файла gem, который необходимо добавить в Gemfile * 1007 вашего приложения, например:

group :development do
  gem 'meta_request'
end

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

bundle install

Перезапустите приложение, откройте его и запустите консоль разработчика, и вы должны увидеть это так: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...