I was writing a piece a code where I needed to change a few object attributes, call a method, then reset those attributes to what they were. And it occured to me that it might be nice to have general purpose tranactions. anobject = AClass.new anobject.attrib = 'set' transaction do anobject.attrib = 'temp' anobject.amethod end p anobject.attrib # => 'set' Seems like there may already be a simple way to do this, but it's not coming to mind. -t0