Jak możesz ukryć dane wyjściowe bazy danych w konsoli Railsów?

103

W nowszej wersji Railsów, od 3 wzwyż, zapytania do bazy danych są wysyłane do konsoli. Jest to przydatne przez większość czasu, ale jak możesz to ukryć, jeśli nie chcesz tego oglądać?

Roger Ertesvag
źródło

Odpowiedzi:

177

Lepszym sposobem na zrobienie tego jest wpisanie tego w konsoli:

ActiveRecord::Base.logger.level = 1 

ponieważ zapobiega problemom podczas próby użycia wskaźnika do loggera, który jest ustawiony na zero (źródło: Wyłącz logowanie Rails SQL w konsoli )

Aby go ponownie włączyć

ActiveRecord::Base.logger.level = 0
Aaron B. Russell
źródło
31
Dzięki. I włącz go ponownie, ActiveRecord::Base.logger.level = 0.
thebenedict
Masz pomysł, jak to zrobić z Mongoidem?
Jesse Farmer
29
ActiveRecord::Base.logger = nil

od tutaj

samvermette
źródło
6
Może to spowodować, że NoMethodErrors z ActiveRecord spodziewa ActiveRecord::Base.loggersię być obiektem, a nie nil.
Aaron B. Russell,
9

Krótka odpowiedź ... W pliku development.rb zmień lub dodaj wartość config.log_leveltak, aby była taka linia

config.log_level = :info
szaleństwo3
źródło
1
Nie, wydaje się, że nie ma to żadnego wpływu na to, co dzieje się w konsoli. Wolałbym również rozwiązanie, które nie wymaga ode mnie zmiany plików projektu.
Roger Ertesvag
Ok, rozwiązanie działa dla mnie z webrick, ale możesz używać innego serwera lub działać w trybie produkcyjnym lub testowym?
madth3
3
Działa w celu zmiany zawartości plików dziennika. Ale pytanie dotyczy konsoli railsów, a nie plików dziennika.
Roger Ertesvag,
6

Od mojego przyjaciela:

your_query; nil
tatiCarvalho
źródło
1
Aby poprawić jakość swojego posta, opisz, jak / dlaczego Twój post rozwiąże problem.
Mick MacCallum
7
To powstrzyma twoją konsolę ruby ​​przed zrzucaniem wyników wyrażeń do konsoli, ale nie powstrzyma ActiveRecord przed zrzucaniem informacji sql do rejestratora railsów.
eremzeit
1
Do poprzednich komentatorów: to odpowiada na pytanie i jest to jedyna odpowiedź, która mi pomogła, czego chcieć więcej?
valk
3
Myślę, że to w ogóle nie odpowiada na pytanie. jak powiedział @eremzeit, nie zatrzyma to wszystkich zapytań sql zrzuconych na konsolę, a jedynie zatrzyma drukowanie wartości zwracanej z tego polecenia ...
opsidao
1
Nie odpowiada na pytanie, ale jest przydatne, aby nie powtarzać wyników
Rutger
4

W Railsach 3.2 ustawienie

config.logger.level = Logger::INFO

działało dobrze dla mnie przy wyłączaniu wyjścia SQL.

brokenbeatnik
źródło
Czy to nadal rejestruje dane wyjściowe SQL w pliku dziennika?
Joshua Pinter
-2

Widzę, że otrzymałeś już potrzebną odpowiedź, chociaż chciałbym ci doradzić klejnot „cichych aktywów”, większość danych dziennika będzie dotyczyła kompilacji aktywów i inkluzji, ten klejnot usunie to i nadal wyprowadza zapytania i zachowanie danych.

baw się dobrze

dennis
źródło
1
Pytanie dotyczy wyjścia na konsolę, a nie plików dziennika
Roger Ertesvag