Class: SaveQueue::Queue

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

Direct Known Subclasses

Plugins::Validation::Queue

Instance Method Summary collapse

Constructor Details

#initializeQueue

Returns a new instance of Queue.



3
4
5
# File 'lib/save_queue/queue.rb', line 3

def initialize
  @queue = []
end

Instance Method Details

#add(object) ⇒ Object

Raises:

  • (ArgumentError)


13
14
15
16
# File 'lib/save_queue/queue.rb', line 13

def add object
  raise ArgumentError, "#{object.inspect} does not include SaveQueue::Object" unless object.class.include? SaveQueue::Object
  @queue << object unless @queue.include? object
end

#add_all(objects) ⇒ Object



7
8
9
10
11
# File 'lib/save_queue/queue.rb', line 7

def add_all objects
  Array(objects).each do |object|
    add object
  end
end

#saveObject



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/save_queue/queue.rb', line 18

def save
  saved = []
  @queue.each do |object|
    if object.has_unsaved_changes?

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

      saved << object
    end
  end
  @queue = []

  true
end