Module: Philiprehberger::Batch

Defined in:
lib/philiprehberger/batch.rb,
lib/philiprehberger/batch/chunk.rb,
lib/philiprehberger/batch/result.rb,
lib/philiprehberger/batch/version.rb,
lib/philiprehberger/batch/processor.rb

Defined Under Namespace

Classes: Chunk, Error, Processor, Result

Constant Summary collapse

VERSION =
'0.4.0'

Class Method Summary collapse

Class Method Details

.process(collection, size: 100, concurrency: 1, retries: 0, on_progress: nil) {|chunk| ... } ⇒ Result

Process a collection in batches with chunking, progress, and error collection.

Parameters:

  • collection (Array, Enumerable)

    items to process

  • size (Integer) (defaults to: 100)

    chunk size

  • concurrency (Integer) (defaults to: 1)

    number of concurrent workers

  • retries (Integer) (defaults to: 0)

    max retries per failed item (default: 0)

  • on_progress (Proc, nil) (defaults to: nil)

    optional callback invoked after each chunk with a progress info hash

Yields:

  • (chunk)

    block that receives a Chunk for processing

Returns:

  • (Result)

    processing result



21
22
23
24
# File 'lib/philiprehberger/batch.rb', line 21

def self.process(collection, size: 100, concurrency: 1, retries: 0, on_progress: nil, &block)
  processor = Processor.new(size: size, concurrency: concurrency, retries: retries)
  processor.call(collection, on_progress: on_progress, &block)
end