Come puoi nascondere l'output del database nella console di Rails?


103

Nella versione più recente di Rails, immagino dalla 3 in su, le query di database vengono inviate alla console. Questo è utile la maggior parte delle volte, ma come puoi nasconderlo quando non vuoi vederlo?

Risposte:


177

Un modo migliore per farlo è digitandolo nella console:

ActiveRecord::Base.logger.level = 1 

poiché previene problemi nel tentativo di utilizzare un puntatore a un logger impostato su nil (fonte: Disabilita il log di Rails SQL nella console )

Per riaccenderlo

ActiveRecord::Base.logger.level = 0

31
Grazie. E per riaccenderlo, ActiveRecord::Base.logger.level = 0.
— thebenedict

Qualche idea su come farlo con Mongoid?
— Jesse Farmer

29
ActiveRecord::Base.logger = nil

da qui


6
Ciò può far sì che NoMethodErrori messaggi di posta elettronica con ActiveRecord si aspettino ActiveRecord::Base.loggerdi essere un oggetto anziché nil.
— Aaron B. Russell

9

Risposta breve ... Nel file development.rb cambia o aggiungi il valore di in config.log_levelmodo che ci sia una riga come

config.log_level = :info

1
No, questo non sembra avere alcun impatto su cosa sta succedendo nella console. Inoltre, preferirei una soluzione che non richieda la modifica dei file di progetto.
— Roger Ertesvag

Ok, la soluzione per me funziona con webrick ma potresti utilizzare un altro server o essere in esecuzione in modalità di produzione o di test?
— madth3

3
Funziona per modificare il contenuto dei file di registro. Ma la domanda riguarda la console di rails, non i file di registro.
— Roger Ertesvag,

6

Da un mio amico:

your_query; nil

1
Per migliorare la qualità del tuo post, includi come / perché il tuo post risolverà il problema.
— Mick MacCallum

7
Questo impedirà alla tua console ruby ​​di scaricare i risultati delle espressioni sulla console, ma non impedirà ad ActiveRecord di scaricare le informazioni sql nel logger di rails.
— eremzeit

1
Ai commentatori precedenti: questo risponde alla domanda, ed è l'unica risposta che ha funzionato per me, cosa si può desiderare di più?
— valk

3
Non credo che questo risponda affatto alla domanda. come ha detto @eremzeit, questo non impedirà a tutte le query sql di essere scaricate sulla tua console, fermerà solo la stampa del valore restituito da quel comando ...
— opsidao

1
Non risponde alla domanda ma è utile per non ripetere i risultati
— Rutger

4

In Rails 3.2, l'impostazione

config.logger.level = Logger::INFO

ha funzionato bene per me per disattivare l'output SQL.


Tuttavia, questo registra ancora l'output SQL nel file di registro?
— Joshua Pinter

-2

Vedo che hai già ottenuto la risposta necessaria, anche se vorrei consigliarti la gemma delle "risorse silenziose", la maggior parte dei dati di registro saranno la compilazione di risorse e le inclusioni, questa gemma la rimuoverà e produrrà comunque le query e il comportamento dei dati.

Divertiti


1
La domanda riguarda l'output sulla console, non i file di registro
— Roger Ertesvag il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.