古いメソッドを呼び出したら警告を表示する
プログラムの更新に伴って、呼び出しが推奨されない古いメソッドが生じることがあるかもしれない。そのようなメソッドは本来プログラム上から取り除くべきだが、いきなり取り除いてしまうと影響が大きいため、呼び出したら警告を表示するようにするのは良い妥協案だ。
Rubyでは特殊変数$VERBOSE
でメッセージの警告レベルを管理している。この変数の値はコマンドラインオプション-W
、-v
、-w
で変更可能である。この変数は警告レベルが低い順にnil
、false
(デフォルト)、true
の値を取る。
古いメソッドを呼び出した時の警告は、この特殊変数$VERBOSE
を参照して、警告レベルが高いときだけ表示するようにするとトラブルが少ないだろう。以下は警告レベルが最大の時に、警告のメッセージを出力するメソッドの例である。warn
メソッドを使って標準エラー出力にメッセージを出力している。
def obsolete_method warn "obsolete_method is obsolete." if $VERBOSE # 処理 end
なおwarn
メソッドは$VERBOSE
がnil
の時にはメッセージを出力しないので、上記のコードでは$VERBOSE
を二重にチェックすることになる。警告レベルが最大ではなく、デフォルト以上の場合にメッセージを表示したいのであれば、上記コードのif
修飾子を削除すれば良い。