You definitely made me question my decision here. The explicit return in the `ensure` clause acts as an [implicit rescue](http://blog.leshill.org/blog/2009/11/17/ensure-with-explicit-return.html). So the difference in this vs. just stating `captured_output` after the `yield` is that it suppresses any exceptions raised in the given block. That may in fact be a Bad Thing™ since it would gobble up errors during our testing.

What do you think? Also, I made a gist illustrating the difference: https://gist.github.com/iamvery/7098827

Full disclosure: This was inspired by one of @avdi 's [tapas](http://www.rubytapas.com/episodes/29-Redirecting-Output).