Ok, now I'm not sure I follow. Apart from the performance issues, why can't you replace every method that "yields" with a method that takes the explicit block parameter, and .call() it?
http://blog.sidu.in/2007/11/ruby-blocks-gotchas.html
is a good run down of some of the problems here
How many people will use yield _AND_ self.send in the same method please?! That seems like an awfully complicated and contrived example. Who the heck does this?