2011-01-12 11 views

risposta

45

Sì, questo può essere ottenuto reindirizzando il log delle rotaie all'output standard.

Scrivi questi nel vostro prompt della console:

ActiveRecord::Base.logger = Logger.new(STDOUT) 
ActiveRecord::Base.connection_pool.clear_reloadable_connections! 

Inoltre, è possibile inserire queste righe nel file ~/.irbrc, in modo che ogni volta che non è necessario scrivere manualmente queste 2 linee:

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 

Spero che questo aiuti ...

+1

Lavorato :) grazie mille. –

+0

Ho appena provato ad aggiungere questo al file '.irbrc' per un vecchio progetto Rails 2.3. ActiveRecord dice che non è ancora stato caricato quando eseguo script/console. C'è qualche trucco che devo fare prima? –

+0

basta aggiungere 'require 'active_record'' sotto' require' rubygems'' – Ritikesh

0

Un altro modo per farlo per ogni progetto è ispirato da http://guides.rubyonrails.org/debugging_rails_applications.html#what-is-the-logger-questionmark:

è possibile specificare un logger alternativa nel vostro environment.rb o qualsiasi file di ambiente:

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. 

Naturalmente, è necessario riavviare il server per far funzionare le cose.

5

In Rails 3+ è possibile utilizzare il metodo di to_sql ActiveRecord :: Relation:

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