1 2 3 4 5 6 7 8 9 10
module Kernel def singleton_method(name) m = method(name) sc = (class <<self; self; end) if m.owner != sc raise NameError, "undefined method '#{name}' for class '#{sc}'" end m end end