Gibt es eine Möglichkeit, die SQL-Abfrageprotokollierung zu deaktivieren, wenn ich Befehle in der Konsole ausführe? Im Idealfall wäre es großartig, wenn ich es einfach deaktivieren und mit einem Befehl in der Konsole wieder aktivieren könnte.
Ich versuche, etwas zu debuggen und verwende "Puts", um einige relevante Daten auszudrucken. Die Ausgabe der SQL-Abfrage erschwert jedoch das Lesen.
Bearbeiten: Ich habe eine andere Lösung gefunden, da das Setzen des Loggers auf Null manchmal einen Fehler auslöste, wenn etwas anderes als mein Code versuchte, logger.warn aufzurufen
Anstatt den Logger auf zu setzen nil
, können Sie die Ebene des Loggers auf setzen 1
.
ActiveRecord::Base.logger.level = 1 # or Logger::INFO
sql
ruby-on-rails
console
Gylaz
quelle
quelle
since setting the logger to nil sometimes raised an error
yap .. Ich habe dieses, als ich versuchte,rake db:migrate
stackoverflow.com/questions/1719212/…Antworten:
So schalten Sie es aus:
So schalten Sie es wieder ein:
quelle
.irbrc
, der im Wesentlichen.bashrc
für die Rails-Konsole gilt. Tatsächlich können Sie so gut wie alles tun,.irbrc
wenn Sie möchten, z. B. Syntaxfarbe, Verlauf, Code in vi bearbeiten und dann in der Rails-Konsole ausführen usw. Überprüfen Sie mein Juwel,utility_belt
wenn Sie sich auf Ruby 1.8 oder dem Ruby 1.9-Port befinden genanntflyrb
.irbrc
ist es.bashrc
aber eigentlich für deine rubin interaktive Kommandozeile. Es ist keine Schienensache. Ich kann mir vorstellen, dass Sie wahrscheinlich Fehler bekommen würden, wenn Sie versuchen würden, auf Rails-Klassen zu verweisen, wenn Sie irb außerhalb einer Rails-Umgebung ausführen.config/initializers/activerecord_logger.rb
ActiveRecord::Base.logger.level = 1
ist eine viel bessere Antwort, da es keine Ausnahmen auslöst, wenn Sie .info und andere verwenden.Hier ist eine Variante, die ich für etwas sauberer halte und die möglicherweise noch andere Protokollierungen von AR zulässt. In config / environment / development.rb:
quelle
Dies ist möglicherweise keine geeignete Lösung für die Konsole, aber Rails hat eine Methode für dieses Problem: Logger # Silence
quelle
Für Rails 4 können Sie Folgendes in eine Umgebungsdatei einfügen:
quelle
Für den Fall, dass jemand die Protokollierung von SQL-Anweisungen tatsächlich ausschalten möchte (ohne die Protokollierungsstufe zu ändern und die Protokollierung von seinen AR-Modellen beizubehalten):
Die Zeile, die in das Protokoll schreibt (jedenfalls in Rails 3.2.16), ist der Aufruf von
debug
inlib/active_record/log_subscriber.rb:50
.Diese Debug-Methode ist definiert durch
ActiveSupport::LogSubscriber
.So können wir die Protokollierung ausschalten, indem wir sie wie folgt überschreiben:
quelle
Rails.logger.debug
Anweisungen zu beeinflussen .Dir.glob( "./lib/*.{rb}" ).each{ | file | require file }
. Denken Sie daran, dass Monkeypatching von manchen missbilligt wird. Sollte dies wahrscheinlich nicht in Ihren Produktionscode einchecken.Ich habe das benutzt:
config.log_level = :info
edit-inconfig/environments/performance.rb
Funktioniert hervorragend für mich, lehnt SQL-Ausgaben ab und zeigt nur Rendering und wichtige Informationen an.
quelle
In Rails 3.2 mache ich so etwas in config / environment / development.rb:
quelle
Genau wie zu Ihrer Information können Sie dies in Rails 2 tun
Natürlich könnten die geschweiften Klammern durch einen
do end
Block ersetzt werden, wenn Sie möchten.quelle