Class: SaveQueue::ObjectQueue

Inherits:
UniqQueue show all
Includes:
Hooks
Defined in:
lib/save_queue/object_queue.rb

Constant Summary

Constants inherited from UniqQueue

UniqQueue::DELEGATED_METHODS

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from UniqQueue

#<<, #add_all, #push

Constructor Details

#initialize(*args) ⇒ ObjectQueue

Returns a new instance of ObjectQueue.



25
26
27
28
# File 'lib/save_queue/object_queue.rb', line 25

def initialize(*args)
  super
  @errors = {}
end

Instance Attribute Details

#errorsHash (readonly)

Returns save.

Returns:

  • (Hash)

    save



23
24
25
# File 'lib/save_queue/object_queue.rb', line 23

def errors
  @errors
end

Instance Method Details

#add(object) ⇒ Object



30
31
32
33
34
35
36
37
38
# File 'lib/save_queue/object_queue.rb', line 30

def add object
  run_hook :before_add, object

  result = super object

  run_hook :after_add, result, object

  result
end

#saveObject



40
41
42
43
44
45
# File 'lib/save_queue/object_queue.rb', line 40

def save
  save!
  true
rescue SaveQueue::Error
  false
end

#save!Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/save_queue/object_queue.rb', line 47

def save!
  run_hook :before_save

  @errors = {}
  saved     = []

  @queue.each do |object|
    if false == object.save
      @errors[:save] = {:saved => saved, :failed => object, :pending => @queue - (saved + [object])}
      raise FailedSaveError, errors[:save]
    end

    saved << object
  end
  clear

  run_hook :after_save

  true
end