Class: Strum::Chain

Inherits:
Object
  • Object
show all
Includes:
Service
Defined in:
lib/strum/chain.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Service

#errors, #failure, #hook, included, #initialize, #method_missing, #on, #respond_to_missing?, #success, #valid?

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Strum::Service

Class Method Details

.call(input = nil, *chain, &block) ⇒ Object



7
8
9
# File 'lib/strum/chain.rb', line 7

def self.call(input = nil, *chain, &block)
  new(input).execute(*chain, &block)
end

Instance Method Details

#execute(*chain, &block) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
# File 'lib/strum/chain.rb', line 11

def execute(*chain, &block)
  audit
  output(_input)
  while (service = chain.shift) && valid?
    service.public_send(:call, outputs[:default]) do |m|
      m.success { |result| output(result) }
      m.failure { |errors| add_errors(errors) }
    end
  end
  valid? ? valid_result(&block) : invalid_result(&block)
end