Comment masquer la sortie de la base de données dans la console Rails?


103

Dans la nouvelle version de Rails, je suppose qu'à partir de 3, les requêtes de base de données sont envoyées à la console. C'est utile la plupart du temps, mais comment pouvez-vous le cacher lorsque vous ne voulez pas le voir?

Réponses:


177

Une meilleure façon de faire est de saisir ceci dans la console:

ActiveRecord::Base.logger.level = 1 

car cela évite les problèmes en essayant d'utiliser un pointeur vers un enregistreur qui est défini sur nil (source: Désactiver la journalisation SQL Rails dans la console )

Pour le rallumer

ActiveRecord::Base.logger.level = 0

31
Merci. Et pour le remettre en marche, ActiveRecord::Base.logger.level = 0.
thebenedict

Une idée comment faire cela avec Mongoid?
Jesse Farmer

29
ActiveRecord::Base.logger = nil

d' ici


6
Cela peut faire en sorte que les NoMethodErrors avec ActiveRecord s'attendent ActiveRecord::Base.loggerà être un objet plutôt que nil.
Aaron

9

Réponse courte ... Dans le fichier development.rb, modifiez ou ajoutez la valeur de config.log_levelpour qu'il y ait une ligne comme

config.log_level = :info

1
Non, cela ne semble pas avoir d'impact sur ce qui se passe dans la console. De plus, je préférerais une solution qui ne m'oblige pas à modifier les fichiers de projet.
Roger Ertesvag

Ok, la solution fonctionne pour moi avec webrick mais vous utilisez peut-être un autre serveur ou utilisez-vous en mode production ou test?
madth3

3
Cela fonctionne pour changer le contenu des fichiers journaux. Mais la question concerne la console des rails, pas les fichiers journaux.
Roger Ertesvag

6

D'un ami à moi:

your_query; nil

1
Pour améliorer la qualité de votre message, veuillez indiquer comment / pourquoi votre message résoudra le problème.
Mick MacCallum

7
Cela va empêcher votre console ruby ​​de transférer les résultats des expressions vers la console, mais cela n'empêchera pas ActiveRecord de transférer les informations SQL vers le journal des rails.
eremzeit

1
Aux commentateurs précédents: cela répond à la question, et c'est la seule réponse qui a fonctionné pour moi, que souhaiter de plus?
valk

3
Je ne pense pas que cela réponde du tout à la question. comme @eremzeit l'a dit, cela n'empêchera pas que toutes les requêtes sql aient été vidées sur votre console, cela arrêtera seulement la valeur de retour de cette commande d'être imprimée ...
opsidao

1
Cela ne répond pas à la question mais utile pour ne pas répéter les résultats
Rutger

4

Dans Rails 3.2, réglage

config.logger.level = Logger::INFO

a bien fonctionné pour moi pour désactiver la sortie SQL.


Cela enregistre-t-il toujours la sortie SQL dans le fichier journal?
Joshua Pinter

-2

Je vois que vous avez déjà obtenu la réponse dont vous avez besoin, même si je voudrais vous conseiller le joyau des `` actifs silencieux '', la plupart des données du journal seront la compilation et les inclusions d'actifs, ce joyau supprimera cela et affichera toujours les requêtes et le comportement des données.

S'amuser


1
La question concerne la sortie vers la console, pas les fichiers journaux
Roger Ertesvag
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.