module Flow::Operation::Failures
Public Instance Methods
define_fail_method_for_problem(problem)
click to toggle source
# File lib/flow/operation/failures.rb, line 39 def define_fail_method_for_problem(problem) problem_failure_name = "#{problem}_failure!".to_sym return if method_defined?(problem_failure_name) define_method(problem_failure_name) { |**details| fail!(problem, **details) } end
define_on_failure_for_problem(problem)
click to toggle source
# File lib/flow/operation/failures.rb, line 32 def define_on_failure_for_problem(problem) on_failure_name = "on_#{problem}_failure".to_sym return if respond_to?(on_failure_name) define_singleton_method(on_failure_name) { |*filters, &block| set_callback(problem, :before, *filters, &block) } end
define_proactive_failure_for_problem(problem, **options)
click to toggle source
# File lib/flow/operation/failures.rb, line 46 def define_proactive_failure_for_problem(problem, **options) conditional_options = options.slice(:if, :unless) set_callback(:execute, :before, -> { fail!(problem) }, **conditional_options) if conditional_options.present? end
fail!(problem, **details)
click to toggle source
# File lib/flow/operation/failures.rb, line 52 def fail!(problem, **details) run_callbacks(problem) do run_callbacks(:failure) do error! OperationFailure.new(problem, **details), **details end end end
failure(problem, **options)
click to toggle source
# File lib/flow/operation/failures.rb, line 23 def failure(problem, **options) problem = problem.to_s.to_sym _failures << problem define_callbacks problem define_on_failure_for_problem(problem) define_fail_method_for_problem(problem) define_proactive_failure_for_problem(problem, **options) end
inherited(base)
click to toggle source
Calls superclass method
# File lib/flow/operation/failures.rb, line 16 def inherited(base) base._failures = _failures.dup super end