Class: PiperDSL::Pipe

Inherits:
Object
  • Object
show all
Defined in:
lib/piper/dsl/piper_pipe.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(step_name, &block) ⇒ Pipe

Returns a new instance of Pipe.



7
8
9
10
# File 'lib/piper/dsl/piper_pipe.rb', line 7

def initialize(step_name, &block)
  @step_name  = step_name
  @block      = block
end

Instance Attribute Details

#serviceObject (readonly)

Returns the value of attribute service.



5
6
7
# File 'lib/piper/dsl/piper_pipe.rb', line 5

def service
  @service
end

Instance Method Details

#perform(service, last_result = nil) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/piper/dsl/piper_pipe.rb', line 12

def perform(service, last_result = nil)
  @service            = service
  service.last_result = last_result
  result              = service.instance_eval(&@block)
  condition           = service.condition_manual? ? service.cond : result

  @result_object      = service.object      || result
  @fail_object        = service.fail_object || service.object || result

  return condition if condition.is_a? Dry::Monads::Result

  prepare_response!(condition)
rescue StandardError => e
  pass_exception!(e)
end