Scheme's dynamic-wind is a rather general form of this; PLT documents it pretty well http://download.plt-scheme.org/doc/103p1/html/mzscheme/node8... . It's designed for use with funny control structures, like continuations, so that should sit well with Ruby types.
I must confess, I had no idea what the combinators had to do with the Ruby. "It looks a little different than the combinatorial version" is a bit of an understatement. And real men program with nothing but X.
EDITED: to fix a link and add a note about continuations.