class Seiun::Queue

Public Class Methods

new(batch_size: 10_000, &operation) click to toggle source
# File lib/seiun/queue.rb, line 3
def initialize(batch_size: 10_000, &operation)
  @batch_size = batch_size
  @operation = operation
  initialize_queue
  @jobs = []
end

Public Instance Methods

<<(record) click to toggle source
# File lib/seiun/queue.rb, line 10
def <<(record)
  push(record)
end
close() click to toggle source
# File lib/seiun/queue.rb, line 20
def close
  operate
  @jobs.compact
end
push(record) click to toggle source
# File lib/seiun/queue.rb, line 14
def push(record)
  @queue << record
  operate if @queue.size == @batch_size
  record
end

Private Instance Methods

initialize_queue() click to toggle source
# File lib/seiun/queue.rb, line 32
def initialize_queue
  @queue = []
end
operate() click to toggle source
# File lib/seiun/queue.rb, line 27
def operate
  @jobs << @operation.call(@queue)
  initialize_queue
end