module Dynflow::Action::Rescue
Constants
- Strategy
- SuggestedStrategy
Public Instance Methods
combine_suggested_strategies(suggested_strategies)
click to toggle source
Override when different approach should be taken for combining the suggested strategies
# File lib/dynflow/action/rescue.rb, line 51 def combine_suggested_strategies(suggested_strategies) if suggested_strategies.empty? nil else # TODO: Find the safest rescue strategy among the suggested ones if suggested_strategies.all? { |suggested_strategy| suggested_strategy.strategy == Skip } return Skip elsif suggested_strategies.all? { |suggested_strategy| suggested_strategy.strategy == Fail } return Fail else return Pause # We don't know how to handle this case, so we'll just pause end 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| rescue_strategy = rescue_strategy_for_planned_action(planned_action) next unless rescue_strategy # ignore actions that have no say in the rescue strategy suggested_strategies << SuggestedStrategy[planned_action, rescue_strategy] 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 45 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 39 def rescue_strategy_for_self return Pause end