Ruby でメソッドのオーバーライドを禁止する話
- http://www.rubyist.net/~nobu/t/20051118.html#p01
- http://d.hatena.ne.jp/iwadon/20051117/1132236662
- http://ruby.11.n6.nabble.com/ruby-dev-37956-proposal-Module-method-adding-td3532363.html
大分昔に書かれたやつを参考に写経。
- method_added を活用して、オーバーライド禁止なメソッドなら例外出す
- 親に限らず祖先のどこかでオーバーライドが禁止されてるかもしれないのでさかのぼる
- method_added はオーバーライド後に実行されるので remove_method で自分から消しておく
- 特異メソッドについては継承とかオーバーライドとか関係無いと考えて無視
- 名前として、freeze が分かりやすいのか、final が分かりやすいのか
- ユニットテスト慣れない