Rubyでメソッドの上書きを禁止する方法

Rubyを採用しない理由Rubyにメソッドの上書きを禁止する構文を導入したらどうかという提案があった。

上書きを禁止したい理由はもっともだと思う。ただ、わざわざ構文を用意しなくとも、method_addedメソッドを利用すれば上書きを禁止できるのではと思った。例えば、次のような方法があると思う。

class Module
  @@method_memory = {}
  def method_added(name)
    @@method_memory[self] ||= {}
    if @@method_memory[self].has_key?(name)
      raise "cannot overwrite the existing method '#{name}'"
    else
      @@method_memory[self][name] = true
    end
  end
end

class Hoge 
  def a
    puts 10
  end
end

class Hoge
  def a # ->例外が発生する
    puts 20 
  end
end

この方法はナイーブすぎるので、副作用が大きすぎて使い物にならない可能性が高いと思う。どこかに使い易い形でのライブラリがないのかな。