Class: PiperService

Inherits:
Dry::Struct
  • Object
show all
Includes:
PiperDSL::PiperConfig, PiperDSL::PiperHelpers, PiperDSL::PiperSteps
Defined in:
lib/piper/piper_service.rb

Defined Under Namespace

Modules: Types

Constant Summary

Constants included from PiperDSL::PiperHelpers

PiperDSL::PiperHelpers::FAIL__NO_BLOCK

Constants included from PiperDSL::PiperConfig

PiperDSL::PiperConfig::DEFAULT__PASS_EXCEPTION, PiperDSL::PiperConfig::DEFAULT__PASS_NIL

Class Method Summary collapse

Instance Method Summary collapse

Methods included from PiperDSL::PiperHelpers

#bump, #condition, #condition_manual?, #fail_object, #last_result, #last_result=, #message, #result_object

Methods included from PiperDSL::PiperSteps

included

Methods included from PiperDSL::PiperConfig

#debug_steps?, included, #pass_exception?, #pass_nil?

Constructor Details

#initialize(_) ⇒ PiperService

Returns a new instance of PiperService.

Raises:

  • (NotImplementedError)


20
21
22
23
24
# File 'lib/piper/piper_service.rb', line 20

def initialize(_)
  raise NotImplementedError unless self.class < PiperService

  super
end

Class Method Details

.pipe(desc, &block) ⇒ Object

Raises:

  • (ArgumentError)


42
43
44
45
46
47
48
# File 'lib/piper/piper_service.rb', line 42

def self.pipe(desc, &block)
  raise ArgumentError, "missing block" unless block_given?

  pipepart = PiperDSL::Pipe.new(desc, &block)

  service_steps << pipepart
end

Instance Method Details

#callObject



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/piper/piper_service.rb', line 26

def call
  result = nil

  if defined? ActiveRecord::Base
    ActiveRecord::Base.transaction do
      result = perform_steps

      raise ActiveRecord::Rollback if result.failure?
    end
  else
    result = perform_steps
  end

  result
end