module Quiver::Mappers::ActiveRecordTransaction

Public Class Methods

transaction(root_module, &block) click to toggle source
# File lib/quiver/mappers.rb, line 54
def self.transaction(root_module, &block)
  raise ArgumentError, "#transaction requires a block" unless block_given?

  transaction = Transaction.new

  ret = nil

  ActiveRecord::Base.transaction do
    begin
      ret = block.call(transaction)
    rescue ::ActiveRecord::ActiveRecordError, RollbackTransaction
      transaction.rollback!
    end

    raise ActiveRecord::Rollback if transaction.rollback?
  end

  ret
end