Class: JobIteration::ParallelEnumerator

Inherits:
Object
  • Object
show all
Defined in:
lib/job-iteration/parallel_enumerator.rb

Overview

ParallelEnumerator allows you to parallelize iterations.

Defined Under Namespace

Classes: EnqueueError, EnqueueJobs

Instance Method Summary collapse

Constructor Details

#initialize(block, cursor:) ⇒ ParallelEnumerator

Returns a new instance of ParallelEnumerator.



36
37
38
39
40
41
# File 'lib/job-iteration/parallel_enumerator.rb', line 36

def initialize(block, cursor:)
  @instance = cursor["instance"]
  @instances = cursor["instances"]
  inner_cursor = cursor["inner_cursor"]
  @inner_enum = block.call(@instance, @instances, inner_cursor)
end

Instance Method Details

#to_enumObject



43
44
45
46
47
48
49
50
# File 'lib/job-iteration/parallel_enumerator.rb', line 43

def to_enum
  Enumerator.new(-> { @inner_enum.size }) do |yielder|
    @inner_enum.each do |object_from_enumerator, cursor_from_enumerator|
      parallel_cursor = { "instance" => @instance, "instances" => @instances, "inner_cursor" => cursor_from_enumerator }
      yielder.yield(object_from_enumerator, parallel_cursor)
    end
  end
end