I don't think this is a bug. The behavior difference is because Hash#each yields an array of [key, value] and not key and value separately, unlike Hash#select.
You can get the behavior you want by using explicit block variables:
Your code could be made to work by adding a definition for Hash#find that yields key and value separately, but I don't think the backwards compatibility issues with such a change are worth it.
Yeah, I had noticed the difference, but I assumed that "method missing = bug". But you are right. That would be a breaking change for a lot of projects (I hand't thought of that).