module Warning

[edit]

要約

警告を出力するためのモジュールです。

本モジュールは warn インスタンスメソッドのみで構成されます。しかし、本モジュールは自身を extend するため、.warn メソッドも利用可能です。warn メソッドは Ruby が出力する全ての警告に対して呼び出されます。デフォルトでは全ての警告が $stderr に出力されます。

Warning.warn をオーバーライドする事で Ruby から出力される警告の動作を変更する事ができます。例えばエラーメッセージのフィルタリングや、$stderr 以外に警告を出力といった変更が可能です。Warning.warn をオーバーライドする際は super を呼び出すとデフォルトの動作である $stderr への出力ができます。

目次

特異メソッド
インスタンスメソッド

特異メソッド

self[category] -> bool[permalink][rdoc][edit]

category の種類の警告を表示するかどうかのフラグを返します。

[PARAM] category:
警告の種類を指定します。

サポートされている category は以下の通りです。

:deprecated

非推奨の警告。例: nil ではない値を $,$; に設定する、キーワード引数、ブロックなしで proc / lambda を呼び出す、等

:experimental

実験的な機能。

例: パターンマッチング

self[category] = flag[permalink][rdoc][edit]

category の警告を表示するかどうかのフラグを設定します。サポートされている category については Warning.[] を参照してください。

[PARAM] category:
警告の種類を指定します。
[PARAM] flag:
真、または偽を指定します。

[SEE_ALSO] Warning.[]

warn(message, category: nil) -> nil[permalink][rdoc][edit]

引数 message を標準エラー出力 $stderr に出力します。

本メソッドはRubyが出力する全ての警告に対して呼び出されます。そのため本メソッドをオーバーライドすることで Ruby から出力される警告の動作を変更できます。またオーバーライドしたメソッドからは super を呼び出すことで、デフォルトの動作である $stderr への出力ができます。


module Warning
  # 警告メッセージに category を表示し、message 末尾に !!! を追加する
  def self.warn(message, category: nil)
    super("#{category} warning : #{message.chomp}!!!\n")
  end
end

warn("hoge", category: :deprecated)
# => deprecated warning : hoge!!!
[PARAM] message:
出力するオブジェクトを指定します。
[PARAM] category:
警告のカテゴリを指定します。サポートされている category については Warning.[] を参照してください。

[SEE_ALSO] Kernel.#warn, Warning#warn

インスタンスメソッド

warn(message, category: nil) -> nil[permalink][rdoc][edit]

引数 message を標準エラー出力 $stderr に出力します。

Kernel.#warnの挙動を変更する際は、このメソッドではなくクラスメソッドであるWarning.warnをオーバーライドする必要があります。

[PARAM] message:
出力するオブジェクトを指定します。
[PARAM] category:
警告のカテゴリを指定します。サポートされている category については Warning.[] を参照してください。

[SEE_ALSO] Kernel.#warn, Warning.warn