Czy istnieje sposób, dzięki któremu widzę, które zapytania mysql są uruchamiane z ActiveRecord w konsoli szyn?Jak wyświetlić zapytania mysql w konsoli szyn
Z góry dziękuję.
Czy istnieje sposób, dzięki któremu widzę, które zapytania mysql są uruchamiane z ActiveRecord w konsoli szyn?Jak wyświetlić zapytania mysql w konsoli szyn
Z góry dziękuję.
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 ...
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.
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"
, obrobione :) Bardzo dziękuję. –
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? –
po prostu dodaj 'require 'active_record'' poniżej' require' rubygems'' – Ritikesh