module Warning

Das Warning-Modul enthält eine einzelne Methode namens warn, und das Modul erweitert sich selbst, wodurch Warning.warn verfügbar wird. Warning.warn wird für alle von Ruby ausgegebenen Warnungen aufgerufen. Standardmäßig werden Warnungen an $stderr ausgegeben.

Das Ändern des Verhaltens von Warning.warn ist nützlich, um anzupassen, wie Warnungen von Ruby behandelt werden, beispielsweise durch Filtern einiger Warnungen und/oder Ausgeben von Warnungen an einem anderen Ort als $stderr.

Wenn Sie das Verhalten von Warning.warn ändern möchten, sollten Sie Warning.extend(MyNewModuleWithWarnMethod) verwenden und Sie können super verwenden, um das Standardverhalten des Ausgebens der Warnung an $stderr zu erhalten.

Beispiel

module MyWarningFilter
  def warn(message, category: nil, **kwargs)
    if /some warning I want to ignore/.match?(message)
      # ignore
    else
      super
    end
  end
end
Warning.extend MyWarningFilter

Sie sollten niemals Warning#warn (die Instanzmethode) neu definieren, da dies dann keine Möglichkeit mehr bietet, das Standardverhalten zu verwenden.

Das Gem warning bietet praktische Möglichkeiten, Warning.warn anzupassen.