class Snapback::Transaction

Public Class Methods

new(&block) click to toggle source
# File lib/snapback/transaction.rb, line 4
def initialize(&block)
  @reverts = []

  begin
    instance_eval &block
  rescue Exception => msg  
    rollback
    raise msg # re-throw
  end
end

Public Instance Methods

revert(&block) click to toggle source
# File lib/snapback/transaction.rb, line 15
def revert(&block)
  @reverts.push block
end
rollback() click to toggle source
# File lib/snapback/transaction.rb, line 19
def rollback
  if Snapback.verbose?
    puts ""
    puts "An error occurred ... rolling back"
    puts ""
  end

  while revert = @reverts.pop
    revert.call
  end
  
  
  puts "" if Snapback.verbose?
end