Class: ActiveOperation::Pipeline

Inherits:
Base
  • Object
show all
Defined in:
lib/active_operation/pipeline.rb

Defined Under Namespace

Classes: OperationFactory

Instance Attribute Summary

Attributes inherited from Base

#error, #output

Class Method Summary collapse

Methods inherited from Base

call, #call, #completed?, from_proc, #halted?, #initialize, inputs, #perform, perform, #succeeded?, to_proc

Constructor Details

This class inherits a constructor from ActiveOperation::Base

Class Method Details

.compose(*operations, &block) ⇒ Object

Raises:

  • (ArgumentError)


43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/active_operation/pipeline.rb', line 43

def compose(*operations, &block)
  raise ArgumentError, "Expects either an array of operations or a block with configuration instructions" unless !!block ^ !operations.empty?

  if block
    Class.new(self, &block)
  else
    Class.new(self) do
      operations.each do |operation|
        use operation
      end
    end
  end
end

.operationsObject



25
26
27
# File 'lib/active_operation/pipeline.rb', line 25

def operations
  []
end

.use(operation, options = {}) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/active_operation/pipeline.rb', line 29

def use(operation, options = {})
  operation = ActiveOperation::Base.from_proc(operation) if operation.kind_of?(Proc)

  if operations.empty?
    inputs = operation.inputs

    inputs.each do |input|
      input input.name, type: input.type
    end
  end

  (@operations ||= []) << OperationFactory.new(operation, options)
end