General Purpose Transactions

T

T. Onoma

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
 
G

Gavin Sinclair

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 Ziegler's Transaction::Simple will help, with slightly
different semantics, I think. Search the RAA for it.

Gavin
 
A

Ara.T.Howard

Date: Fri, 14 Nov 2003 09:30:26 +0900
From: T. Onoma <[email protected]>
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'
===============================================================================
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,776
Messages
2,569,603
Members
45,190
Latest member
ClayE7480

Latest Threads

Top