Sha256: 42cc34ac62adf1efdc2e24580f3b7dd20be5fc6846b4c2dfa4c02c0559aaca1d
Contents?: true
Size: 991 Bytes
Versions: 1
Compression:
Stored size: 991 Bytes
Contents
# frozen_string_literal: true module Simplekiq class Orchestration attr_accessor :serial_workflow, :parallel_workflow def initialize @serial_workflow = [] end def run(*step) workflow = parallel_workflow || serial_workflow workflow << step end def in_parallel @parallel_workflow = [] yield serial_workflow << @parallel_workflow if @parallel_workflow.any? ensure @parallel_workflow = nil serial_workflow end def execute(parent_batch) OrchestrationExecutor.execute(workflow: serialized_workflow, parent_batch: parent_batch) end def serialized_workflow @serialized_workflow ||= serial_workflow.map do |step| case step[0] when Array step.map do |(job, *args)| {"klass" => job.name, "args" => args} end when Class job, *args = step {"klass" => job.name, "args" => args} end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
simplekiq-0.0.3 | lib/simplekiq/orchestration.rb |