मुझे यह भी नहीं पता था कि ऐसा करने के लिए एक प्लगइन था :)
यहाँ हम क्या उपयोग करते हैं (लेकिन आपको इसमें गतिरोध-प्रवण प्रश्नों को स्वयं लपेटना होगा):
# Executes the given block +retries+ times (or forever, if explicitly given nil),
# catching and retrying SQL Deadlock errors.
def retry_lock_error(retries = 100, &block)
begin
yield
rescue ActiveRecord::StatementInvalid => e
if e.message =~ /Deadlock found when trying to get lock/ and (retries.nil? || retries > 0)
retry_lock_error(retries ? retries - 1 : nil, &block)
else
raise e
end
end
end