2011-11-01 19 views
20

Podczas gdy pełna funkcja wywołań SQL/ActiveRecord jest przydatna przez większość czasu, chciałbym ją wyłączyć w przypadkach, w których mam trochę pętli.Wyłączyć verbose sql/ActiveRecord dla Rails 3.1.1

Czy można go wyłączyć?

irb(main):055:0> City.first 
    ←[1m←[35mCity Load (1.0ms)←[0m SELECT `cities`.* FROM `cities` LIMIT 1 
=> #<City id: 1, name: "bla bla", state_id: 1, zip: nil, country_id: nil, 
created_at: "2011-03-27 14:11:28", updated_at: "2011-08-16 11:14:36", guid: "5PK 
fvvz2Gsi"> 
+3

Tak, możesz wyłączyć: http://stackoverflow.com/questions/7759321/disable-rails-3-1-sql-logging –

+0

Dzięki, @JohnBachir =) – Abdo

Odpowiedz

25

W konsoli:
Wyłącz:

old_logger = ActiveRecord::Base.logger 
ActiveRecord::Base.logger = nil 

Włącz:

ActiveRecord::Base.logger = old_logger 
+1

Czy istnieje inny sposób robienia tego ? Powoduje to błędy w kodzie, które używają logger.debug. Chciałbym wyłączyć te, które nie pisałem ręcznie. – Abdo

+41

Innym sposobem na to, jak wspomniano w http://stackoverflow.com/questions/7759321/disable-rails-3-1-sql-logging, jest 'ActiveRecord :: Base.logger.level = 1', aby włączyć wylogowanie (ustawia poziom logu na informacje) i 'ActiveRecord :: Base.logger.level = 0', aby go ponownie włączyć (ustawia poziom dziennika na debugowanie). –

+0

@HenrikN jest to trwałe, czy tylko na sesję? – FloatingRock

4

w szynach 4 Byłem zirytowany ActiveRecord sprawozdań rejestrowanie SQL w środku moich specyfikacji tak Wyłączam go, dodając to do config/environments/test.rb:

Rails.application.configure do 
    # ... 
    config.log_level = :info 
end 
Powiązane problemy