module Dynflow::Action::Rescue

Constants

Strategy
SuggestedStrategy

Public Instance Methods

combine_suggested_strategies(suggested_strategies) click to toggle source

Override when different appraoch should be taken for combining the suggested strategies

# File lib/dynflow/action/rescue.rb, line 49
def combine_suggested_strategies(suggested_strategies)
  if suggested_strategies.empty? ||
        suggested_strategies.all? { |suggested_strategy| suggested_strategy.strategy == Skip }
    return Skip
  else
    return Pause
  end
end
rescue_strategy() click to toggle source

What strategy should be used for rescuing from error in the action or its sub actions

@return Strategy

When determining the strategy, the algorithm starts from the entry action that by default takes the strategy from rescue_strategy_for_self and rescue_strategy_for_planned_actions and combines them together.

# File lib/dynflow/action/rescue.rb, line 21
def rescue_strategy
  suggested_strategies = []

  if self.steps.compact.any? { |step| step.state == :error }
    suggested_strategies << SuggestedStrategy[self, rescue_strategy_for_self]
  end

  self.planned_actions.each do |planned_action|
    suggested_strategies << SuggestedStrategy[planned_action, rescue_strategy_for_planned_action(planned_action)]
  end

  combine_suggested_strategies(suggested_strategies)
end
rescue_strategy_for_planned_action(action) click to toggle source

Override when the action should override the rescue strategy of an action it planned

# File lib/dynflow/action/rescue.rb, line 43
def rescue_strategy_for_planned_action(action)
  action.rescue_strategy
end
rescue_strategy_for_self() click to toggle source

Override when another strategy should be used for rescuing from error on the action

# File lib/dynflow/action/rescue.rb, line 37
def rescue_strategy_for_self
  return Pause
end