クラスメソッドをundefする
このブログ(ばくのエンジニア日誌)はBAKUNOTEに移転しました。
Rubyでクラスメソッドをundefする時のメモ。
まずは以下のようにクラスメソッドを定義し、undefする。
class A def A.msg puts "class method" end end class A undef A.msg end
結果、エラーになる。
undef
メソッドはシンボルまたは識別子を受け付けるけど、A.msg
だと識別子としては認識してくれないみたい。
対策
クラスを再オープンする。
class << A undef msg end
これでundefできました。
ちなみに、undef_methodも同じようにクラスの再オープンをしないとエラーになる。