It appears (from reading "Programming Ruby' (Second Edition - Dave
Thomas) that this is new behavior starting Ruby 1.8.
In summary, (page 358) it says this:
"A return from inside a block that's still in scope acts as a return
from that scope. A return from a block whose original context is not
longer valid raises an exception (LocalJumpError or ThreadError
depending on the context)..."
It then goes on to cite examples and offers ideas for workarounds.
Google search showed a few hits. Here's one with a workaround:
http://blog.jayfields.com/2007/03/ruby-localjumperror-workaround.html
Todd