Class: Clomp::Executor

Inherits:
Object
  • Object
show all
Defined in:
lib/clomp/executor.rb

Class Method Summary collapse

Class Method Details

.[](result = {}, options, _self:) ⇒ Object

_self = operation



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/clomp/executor.rb', line 9

def [](result = {}, options, _self:)
  result['tracks'].each_with_index do |track, i|
    
    break if break?(result['tracks'].select {|track|  track.executed? }, i)
    
    next if _self.successful? && track.left_track?
    next if _self.failed? && track.right_track?
    
    _callable_object = Callable[track, options, _self]
    
    raise Errors::TrackNotDefined, "Please define the track in your operation/service: #{track.name} in #{_callable_object.class}" unless _callable_object.respond_to?(track.name)
    
    _track = track.exec!(_callable_object, options)
  end
  
  _self
end

.break?(tracks, index) ⇒ Boolean

Returns:

  • (Boolean)


27
28
29
30
31
32
33
34
35
# File 'lib/clomp/executor.rb', line 27

def break?(tracks, index)
  track = index > 0 && tracks[index -1] || Track.new(name: SecureRandom.hex(5)).tap {|track| track.mark_as_success! && track.executed = true}
  
  return true if track.right_track? && track.failure? && track.track_options[:fail_fast]
  
  return true if track.left_track? && track.track_options[:fail_fast]
  
  !track.track_options[:pass_fast].nil?
end