Existe-t-il un moyen de désactiver la journalisation des requêtes SQL lorsque j'exécute des commandes dans la console? Idéalement, ce serait génial si je pouvais simplement le désactiver et le réactiver avec une commande dans la console.
J'essaie de déboguer quelque chose et d'utiliser "met" pour imprimer des données pertinentes. Cependant, la sortie de la requête SQL rend la lecture difficile.
Edit: j'ai trouvé une autre solution, car la définition de l'enregistreur sur nil soulevait parfois une erreur, si autre chose que mon code essayait d'appeler logger.warn
Au lieu de définir l'enregistreur sur nil
vous pouvez définir le niveau de l'enregistreur sur 1
.
ActiveRecord::Base.logger.level = 1 # or Logger::INFO
sql
ruby-on-rails
console
gylaz
la source
la source
since setting the logger to nil sometimes raised an error
yap .. J'ai eu celui-ci en essayant d'exécuterrake db:migrate
stackoverflow.com/questions/1719212/…Réponses:
Pour le désactiver:
Pour le réactiver:
la source
.irbrc
, qui est essentiellement.bashrc
pour la console Rails. en fait, vous pouvez faire n'importe quoi.irbrc
si vous le souhaitez, par exemple, la coloration de la syntaxe, l'historique, éditer le code dans vi, puis l'exécuter dans la console Rails, etc. consultez mon bijouutility_belt
si vous êtes sur Ruby 1.8 ou le port Ruby 1.9 appeléflyrb
.irbrc
c'est comme.bashrc
mais en fait pour votre ligne de commande interactive ruby . Ce n'est pas une affaire de rails. J'imagine que vous obtiendrez probablement des erreurs si vous essayez de référencer des classes de rails lorsque vous exécutez irb en dehors d'un environnement de rails.config/initializers/activerecord_logger.rb
ActiveRecord::Base.logger.level = 1
est une bien meilleure réponse car elle ne soulèvera pas d'exceptions si vous utilisez .info et d'autres.Voici une variante que je considère un peu plus propre, qui permet toujours d'autres enregistrements potentiels de AR. Dans config / environnements / development.rb:
la source
Ce n'est peut-être pas une solution appropriée pour la console, mais Rails a une méthode pour ce problème: Logger # silence
la source
Pour Rails 4, vous pouvez mettre les éléments suivants dans un fichier d'environnement:
la source
Dans le cas où quelqu'un veut vraiment mettre KO l' enregistrement de l' instruction SQL (sans changer le niveau de l' exploitation forestière, et tout en gardant l'enregistrement de leurs modèles AR):
La ligne qui écrit dans le journal (dans Rails 3.2.16, de toute façon) est l'appel à
debug
inlib/active_record/log_subscriber.rb:50
.Cette méthode de débogage est définie par
ActiveSupport::LogSubscriber
.Nous pouvons donc éliminer la journalisation en la remplaçant comme suit:
la source
Rails.logger.debug
instructions.Dir.glob( "./lib/*.{rb}" ).each{ | file | require file }
. Gardez à l'esprit que le monkeypatching est mal vu par certains. Ne devrait probablement pas vérifier cela dans votre code de production.J'ai utilisé ceci:
config.log_level = :info
montageconfig/environments/performance.rb
Fonctionnant très bien pour moi, rejetant la sortie SQL et affichant uniquement le rendu et les informations importantes.
la source
Dans Rails 3.2, je fais quelque chose comme ça dans config / environment / development.rb:
la source
Tout comme un info, dans Rails 2, vous pouvez faire
Évidemment, les accolades pourraient être remplacées par un
do end
bloc si vous le vouliez.la source