¿Hay alguna forma de ver qué consultas de mysql se activan desde ActiveRecord en la consola de rails?Cómo ver las consultas de mysql en la consola de rails
Gracias de antemano.
¿Hay alguna forma de ver qué consultas de mysql se activan desde ActiveRecord en la consola de rails?Cómo ver las consultas de mysql en la consola de rails
Gracias de antemano.
Sí, esto se puede lograr redirigiendo el registro de rieles a la salida estándar.
escribir estos en su indicador de la consola:
ActiveRecord::Base.logger = Logger.new(STDOUT)
ActiveRecord::Base.connection_pool.clear_reloadable_connections!
Además, puede poner estas líneas en el archivo ~/.irbrc, para que cada vez que no es necesario escribir manualmente estas 2 líneas:
require 'rubygems'
if ENV.include?('RAILS_ENV') && ENV["RAILS_ENV"] == 'development'
ActiveRecord::Base.logger = Logger.new(STDOUT)
ActiveRecord::Base.connection_pool.clear_reloadable_connections!
end
Espero que esto ayude ...
Otra manera de hacerlo para cada proyecto se inspira en http://guides.rubyonrails.org/debugging_rails_applications.html#what-is-the-logger-questionmark:
puede especificar un registrador alternativa en su environment.rb o cualquier archivo de entorno:
ActiveRecord::Base.logger = Logger.new("log/active_record.log") #This outputs the mysql queries to a file named active_record.log under your project's log folder.
Por supuesto, es necesario reiniciar el servidor para que las cosas funcionen.
En Rails 3+ se puede utilizar el método de to_sql
ActiveRecord :: Relation:
User.where(:id => 3).to_sql
#=> "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"id\" = 3"
Trabajado :) muchas gracias. –
Acabo de intentar agregar esto al archivo '.irbrc' para un viejo proyecto de Rails 2.3. Dice que ActiveRecord aún no está cargado cuando ejecuto el script/consola. ¿Hay algún truco de carga que deba hacer primero? –
simplemente agregue 'require 'active_record'' debajo' require' rubygems'' – Ritikesh