Got It!
class Module
private
def override_method( name, &body )
begin
supr = instance_method( name )
rescue NameError
supr = lambda {}
end
define_method( name, &body )
meth = instance_method( name )
define_method( name ) { |*args|
meth.bind(self).call( supr.bind(self), *args )
}
end
end
If define_method won’t give up its magic willingly, we must steal it.