Cuando ejecuto consultas (por ejemplo, MyModel.where(...)
o record.associated_things
) en la consola, ¿cómo puedo ver las consultas reales de la base de datos que se están ejecutando para poder comprender mejor lo que está sucediendo?
ruby-on-rails
activerecord
randombits
fuente
fuente
Respuestas:
Rieles 3+
Ingrese esta línea en la consola:
Carriles 2
Ingrese esta línea en la consola:
fuente
ActiveRecord::Base.logger = nil
En Rails 3+ puedes usar el
to_sql
método ActiveRecord :: Relation :fuente
Existe el
.explain
método en Rails 4.(
.to_sql
también funciona, pero no muestra las inclusiones)fuente
.explain
voluntad para hacer el trabajo y no.to_sql
. Y.explain
todavía no proporciona una consulta SQL en formato sin procesar que pueda ejecutar en la consola pg. Pero necesitaba la consulta en bruto para explicar y analizar. Supongo que tendrá que ver con explicarlo por ahora.Recientemente, puede usar esto:
https://github.com/dejan/rails_panel
Consiste en un complemento del panel de la consola del desarrollador para Chrome y un archivo de gema que debe agregarse al Gemfile de su aplicación de esta manera:
Luego corre de nuevo:
Reinicie su aplicación, ábrala e inicie la consola de desarrollador, y debería verla así:
fuente
A partir de Rails 6, existe un enfoque más conveniente: simplemente agregue la
ActiveRecord::Base.verbose_query_logs = true
consola y verá todas las llamadas SQL y los lugares donde se llamó. Más información https://guides.rubyonrails.org/debugging_rails_applications.html#verbose-query-logsfuente
Prefiero configurar el nivel de registrador en
config/application.rb
:En producción, mi
ENV['LOG_LEVEL']
se establecerá en el valor deLogger::INFO
y en mi máquina local seráLogger::DEBUG
.fuente