Ruby Tips!

RubyのTipsを紹介します

古いメソッドを呼び出したら警告を表示する

プログラムの更新に伴って、呼び出しが推奨されない古いメソッドが生じることがあるかもしれない。そのようなメソッドは本来プログラム上から取り除くべきだが、いきなり取り除いてしまうと影響が大きいため、呼び出したら警告を表示するようにするのは良い妥協案だ。

Rubyでは特殊変数$VERBOSEでメッセージの警告レベルを管理している。この変数の値はコマンドラインオプション-W-v-wで変更可能である。この変数は警告レベルが低い順にnilfalse(デフォルト)、trueの値を取る。

古いメソッドを呼び出した時の警告は、この特殊変数$VERBOSEを参照して、警告レベルが高いときだけ表示するようにするとトラブルが少ないだろう。以下は警告レベルが最大の時に、警告のメッセージを出力するメソッドの例である。warnメソッドを使って標準エラー出力にメッセージを出力している。

def obsolete_method
  warn "obsolete_method is obsolete." if $VERBOSE

  # 処理
end

なおwarnメソッドは$VERBOSEnilの時にはメッセージを出力しないので、上記のコードでは$VERBOSEを二重にチェックすることになる。警告レベルが最大ではなく、デフォルト以上の場合にメッセージを表示したいのであれば、上記コードのif修飾子を削除すれば良い。