Apologies if this looks like a dupe. I posted something similar a
couple days ago but I can’t seem to find the thread. In my profile it
claims I posted the thread, but then won’t give me a link to it.
anyway…
I have 2 ruby processes that are chugging along adding or updating
email addresses from different sources. Occasionally, they both see the
same email address at the same time. They’re inserting into a table
that has a unique index on the email address.
So I have code along the lines of:
def address_seen(newaddr)
transaction
addrinfo = AddrInfo.find(:addr => newaddr)
if addrinfo == nil
addrinfo = AddrInfo.create!(:addr => newaddr, …)
end
end
end
The problem is this doesn’t prevent a duplicate insert error (resulting
in Mysql::Error: #23000Duplicate entry).
How, using rails, can I make 2 or more ruby processes coordinate
through the DB so that they don’t try to insert the same row more than
once?