2011-01-12 17 views

Respuesta

45

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 ...

+1

Trabajado :) muchas gracias. –

+0

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? –

+0

simplemente agregue 'require 'active_record'' debajo' require' rubygems'' – Ritikesh

0

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.

5

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" 
Cuestiones relacionadas