On Fri, 14 Nov 2003, T. Onoma wrote:
> Date: Fri, 14 Nov 2003 09:30:26 +0900
> From: T. Onoma <>
> Newsgroups: comp.lang.ruby
> Subject: General Purpose Transactions
>
> 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.
austin's transaction::simple (RAA) does this. also, there's always:
begin
org = obj and obj = Marshal.load(Marshal.dump(obj))
obj.parm = 42
obj.method()
ensure
obj = org
end
-a
--
ATTN: please update your address books with address below!
================================================== =============================
| EMAIL :: Ara [dot] T [dot] Howard [at] noaa [dot] gov
| PHONE :: 303.497.6469
| ADDRESS :: E/GC2 325 Broadway, Boulder, CO 80305-3328
| STP ::
http://www.ngdc.noaa.gov/stp/
| NGDC ::
http://www.ngdc.noaa.gov/
| NESDIS ::
http://www.nesdis.noaa.gov/
| NOAA ::
http://www.noaa.gov/
| US DOC ::
http://www.commerce.gov/
|
| The difference between art and science is that science is what we
| understand well enough to explain to a computer.
| Art is everything else.
| -- Donald Knuth, "Discover"
|
| /bin/sh -c 'for l in ruby perl;do $l -e "print \"\x3a\x2d\x29\x0a\"";done'
================================================== =============================