Rubyでmethod_addedとinheritedを使ってjavaのfinal的なことをやってみたメソッドのオーバーライドを禁止してみたい(というかjavaでいうところのfinalをやりたい)と思ったので、いろいろ調べてみたところ、クラスの定義に関するフックmethod_addedとinheritedを使うとできそうなので、コードを書いてみました。method_addedでメソッドの定義が行われると、そのメソッドを削除して例外を発生させる継承してmethod_addedを上書きすると上記チェックを回避できてしまうinheritedで例外を発生させて継承を禁止するinheritedのチェックだけだと、同一クラスの再定義でメソッドを上書きできてしまうmethod_addedでremove_methodをすると、上書き前のメソッドも削除されてしまうのが、ちょっと不便ですね。追加前をフックできるといいのですが。FinalClassendま、実務で使うかどうかといわれるとわかりませんが・・・。こしごぇ(B)本記事は上記2記事を足して割った感じです。Rubyfreezeの利用も検討しましたが、いろいろと抜け穴ができてしまったので断念しました。