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.