I can see 2 issues around this:

1) It's not thread-safe: if two threads call `Money.rounding_mode` then you may get inconsistent results.
2) If the yield fails for any reason you may be left in an inconsistent state because you haven't set the rounding mode back. Suggest you use an `ensure` to set the rounding mode back.