Wie können Sie die Datenbankausgabe in der Rails-Konsole ausblenden?

103

In einer neueren Version von Rails werden ab 3 Datenbankabfragen an die Konsole ausgegeben. Dies ist meistens nützlich, aber wie können Sie es ausblenden, wenn Sie es nicht sehen möchten?

Roger Ertesvag
quelle

Antworten:

177

Ein besserer Weg, dies zu tun, besteht darin, dies in die Konsole einzugeben:

ActiveRecord::Base.logger.level = 1 

da es Probleme beim Versuch verhindert, einen Zeiger auf einen Logger zu verwenden, der auf Null gesetzt ist (Quelle: Rails SQL-Protokollierung in der Konsole deaktivieren )

Um es wieder einzuschalten

ActiveRecord::Base.logger.level = 0
Aaron B. Russell
quelle
31
Vielen Dank. Und um es wieder einzuschalten , ActiveRecord::Base.logger.level = 0.
Thebenedict
Irgendeine Idee, wie man das mit Mongoid macht?
Jesse Farmer
29
ActiveRecord::Base.logger = nil

von hier

Samvermette
quelle
6
Dies kann dazu führen, NoMethodErrordass ActiveRecord erwartet ActiveRecord::Base.logger, dass es sich eher um ein Objekt als um ein Objekt handelt nil.
Aaron B. Russell
9

Kurze Antwort ... Ändern oder addieren Sie in der Datei development.rb den Wert von, config.log_levelsodass eine Zeile wie angezeigt wird

config.log_level = :info
madth3
quelle
1
Nein, dies scheint keinen Einfluss darauf zu haben, was in der Konsole vor sich geht. Außerdem würde ich eine Lösung bevorzugen, bei der ich keine Projektdateien ändern muss.
Roger Ertesvag
Ok, die Lösung funktioniert für mich mit Webrick, aber Sie verwenden möglicherweise einen anderen Server oder laufen im Produktions- oder Testmodus?
madth3
3
Es funktioniert zum Ändern des Inhalts der Protokolldateien. Die Frage betrifft jedoch die Rails-Konsole, nicht die Protokolldateien.
Roger Ertesvag
6

Von einem Freund von mir:

your_query; nil
tatiCarvalho
quelle
1
Um die Qualität Ihres Beitrags zu verbessern, geben Sie bitte an, wie / warum Ihr Beitrag das Problem löst.
Mick MacCallum
7
Dadurch wird verhindert, dass Ihre Ruby-Konsole die Ergebnisse von Ausdrücken an die Konsole ausgibt. ActiveRecord wird jedoch nicht daran gehindert, SQL-Informationen in den Rails-Logger zu übertragen.
Eremzeit
1
An die vorherigen Kommentatoren: Dies beantwortet die Frage und es ist die einzige Antwort, die für mich funktioniert hat. Was kann man sich mehr wünschen?
Valk
3
Ich denke nicht, dass dies die Frage überhaupt beantwortet. Wie @eremzeit sagte, wird dies nicht verhindern, dass alle SQL-Abfragen an Ihre Konsole ausgegeben werden, sondern nur, dass der Rückgabewert dieses Befehls gedruckt wird ...
opsidao
1
Es beantwortet die Frage nicht, ist aber nützlich, um die Ergebnisse nicht zu wiederholen
Rutger
4

In Rails 3.2 einstellen

config.logger.level = Logger::INFO

hat für mich gut funktioniert, um die SQL-Ausgabe auszuschalten.

gebrochenbeatnik
quelle
Protokolliert dies dennoch die SQL-Ausgabe in der Protokolldatei?
Joshua Pinter
-2

Ich sehe, dass Sie bereits die gewünschte Antwort erhalten haben, obwohl ich Ihnen das Juwel "Stille Assets" empfehlen möchte. Die meisten Protokolldaten werden zum Kompilieren und Einschließen von Assets verwendet. Dieses Juwel wird dies entfernen und dennoch die Abfragen und das Datenverhalten ausgeben.

Habe Spaß

Dennis
quelle
1
Die Frage
bezieht sich