Class: Transaction

Inherits:
Object
  • Object
show all
Defined in:
lib/transaction.rb

Instance Method Summary collapse

Constructor Details

#initializeTransaction

Returns a new instance of Transaction.



2
3
4
# File 'lib/transaction.rb', line 2

def initialize
  @tasks = []
end

Instance Method Details

#<<(task) ⇒ Object



6
7
8
# File 'lib/transaction.rb', line 6

def <<(task)
  @tasks << task
end

#performObject



14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/transaction.rb', line 14

def perform
  completed_tasks = []
  @tasks.each do |task|
    completed_tasks.unshift task
    unless task.perform
      completed_tasks.each &:undo
      break
    end
  end
rescue Exception => e
  completed_tasks.each &:undo
  raise
end

#tasksObject



10
11
12
# File 'lib/transaction.rb', line 10

def tasks
  @tasks
end