7 Stimmen

Bestimmte Warnungen in Ruby unterdrücken

Ich habe viele Beiträge gesehen, die die -W0 Flagge als Antwort auf dieses Problem, aber ich möchte nicht alle Warnungen unterdrücken, sondern nur Warnungen mit einem bestimmten Wert.

Ich bin eine Nicht-Rails-Anwendung (die ActiveRecord verwendet, ungeachtet) auf Ruby 1.8.7 ausgeführt. Ich möchte alle Warnungen mit Ausnahme der folgenden DEPRECATION WARNING behalten:

Object#id will be deprecated; use Object#object_id

Wenn das nicht möglich ist, würde ich gerne alle Verwerfungswarnungen über Bord werfen. Zumindest in Java ist das möglich. Wie sieht es mit Ruby aus?

Update: Ich habe beide Antworten hochgestuft, aber diejenige angekreuzt, die spätere Suchende hier zu finden erwarten werden.

10voto

Chris Mowforth Punkte 6571

Wenn es einen bestimmten Codeabschnitt gibt, der die Warnungen hervorruft, können Sie versuchen, das Kernel-Modul von ActiveSupport und umwickeln ihn mit einem silence_warnings Block (Beispiel direkt aus dem RDoc):

silence_warnings do
  value = do_something_that_causes_warning # no warning voiced
end

noisy_call # warning voiced

Ist es unbedingt notwendig, sie zu unterdrücken? Es ist ja nicht so, dass Sie etwas kompilieren und eine Menge Warnungen auf einmal durchsehen müssen...

4voto

Andrew Grimm Punkte 73882

Edita: Wenn Sie read_attribute(:id) dann sollten Sie die Warnung vermeiden. Danke Jeremy!

Ich bin kein Rails-Entwickler, aber gibt es nicht eine Methode, mit der Sie sagen können: "Ich möchte das Datenbankfeld id , nicht die id Methode des Objekts"?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X