2011-01-12 14 views

Odpowiedz

45

Tak, można to osiągnąć poprzez przekierowanie dziennika szyn na standardowe wyjście.

Wpisz je w swoim wierszu konsoli:

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

Ponadto, można umieścić te linie w pliku ~/.irbrc, tak aby za każdym razem nie trzeba ręcznie pisać te 2 linie:

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 

Nadzieja to pomaga ...

+1

, obrobione :) Bardzo dziękuję. –

+0

Po prostu próbowałem dodać to do pliku '.irbrc' dla starego projektu Rails 2.3. Mówi, że ActiveRecord nie jest jeszcze załadowany po uruchomieniu skryptu/konsoli. Czy najpierw muszę wykonać jakieś włamanie? –

+0

po prostu dodaj 'require 'active_record'' poniżej' require' rubygems'' – Ritikesh

0

Innym sposobem, aby to zrobić dla każdego projektu jest inspirowany http://guides.rubyonrails.org/debugging_rails_applications.html#what-is-the-logger-questionmark:

Możesz określić alternatywny logger w twoim environment.rb lub dowolny plik Środowisko:

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. 

Oczywiście, trzeba ponownie uruchomić serwer, aby to wszystko działa.

5

W Rails 3+ można użyć ActiveRecord :: Relacja za to_sql metody:

User.where(:id => 3).to_sql 
#=> "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"id\" = 3" 
Powiązane problemy