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