読者です 読者をやめる 読者になる 読者になる

こしごぇ(B)

旧:http://d.hatena.ne.jp/koshigoeb/

Ruby でメソッドのオーバーライドを禁止する話

大分昔に書かれたやつを参考に写経。

  • method_added を活用して、オーバーライド禁止なメソッドなら例外出す
  • 親に限らず祖先のどこかでオーバーライドが禁止されてるかもしれないのでさかのぼる
  • method_added はオーバーライド後に実行されるので remove_method で自分から消しておく
  • 特異メソッドについては継承とかオーバーライドとか関係無いと考えて無視
  • 名前として、freeze が分かりやすいのか、final が分かりやすいのか
  • ユニットテスト慣れない