Class: RailsWorkflow::ErrorResolver
- Inherits:
-
Object
- Object
- RailsWorkflow::ErrorResolver
- Defined in:
- lib/rails_workflow/error_resolver.rb
Overview
Default error resolver. Can be changed in configuration. Manages errors processing
Instance Attribute Summary collapse
-
#error ⇒ Object
Returns the value of attribute error.
Class Method Summary collapse
Instance Method Summary collapse
- #config ⇒ Object
- #dependency_resolver ⇒ Object
- #fix_status(subject) ⇒ Object
-
#initialize(error) ⇒ ErrorResolver
constructor
A new instance of ErrorResolver.
- #operation_builder ⇒ Object
- #operation_runner ⇒ Object
- #prepared_target ⇒ Object
- #process_manager ⇒ Object
- #process_runner ⇒ Object
- #retry ⇒ Object
- #try_restart_process ⇒ Object
Constructor Details
#initialize(error) ⇒ ErrorResolver
Returns a new instance of ErrorResolver.
15 16 17 |
# File 'lib/rails_workflow/error_resolver.rb', line 15 def initialize(error) @error = error end |
Instance Attribute Details
#error ⇒ Object
Returns the value of attribute error.
7 8 9 |
# File 'lib/rails_workflow/error_resolver.rb', line 7 def error @error end |
Class Method Details
.retry(error) ⇒ Object
11 12 13 |
# File 'lib/rails_workflow/error_resolver.rb', line 11 def self.retry(error) new(error).retry end |
Instance Method Details
#config ⇒ Object
48 49 50 |
# File 'lib/rails_workflow/error_resolver.rb', line 48 def config RailsWorkflow.config end |
#dependency_resolver ⇒ Object
64 65 66 |
# File 'lib/rails_workflow/error_resolver.rb', line 64 def dependency_resolver config.dependency_resolver.new(process) end |
#fix_status(subject) ⇒ Object
26 27 28 29 30 |
# File 'lib/rails_workflow/error_resolver.rb', line 26 def fix_status(subject) subject.status = Status::IN_PROGRESS subject.save! fix_status(subject.parent) if subject.parent.present? end |
#operation_builder ⇒ Object
60 61 62 |
# File 'lib/rails_workflow/error_resolver.rb', line 60 def operation_builder config.operation_builder.new(*data[:args]).tap { data[:args] = nil } end |
#operation_runner ⇒ Object
56 57 58 |
# File 'lib/rails_workflow/error_resolver.rb', line 56 def operation_runner config.operation_runner.new(operation) end |
#prepared_target ⇒ Object
32 33 34 35 36 37 38 |
# File 'lib/rails_workflow/error_resolver.rb', line 32 def prepared_target return operation_runner if target == 'operation_runner' return operation_builder if target == 'operation_builder' return dependency_resolver if target == 'dependency_resolver' return process_manager if target == 'process_manager' target end |
#process_manager ⇒ Object
52 53 54 |
# File 'lib/rails_workflow/error_resolver.rb', line 52 def process_manager config.process_manager.new(process) end |
#process_runner ⇒ Object
68 69 70 |
# File 'lib/rails_workflow/error_resolver.rb', line 68 def process_runner config.process_runner.new(process) end |
#retry ⇒ Object
19 20 21 22 23 24 |
# File 'lib/rails_workflow/error_resolver.rb', line 19 def retry update_attribute(:resolved, true) fix_status(error.parent) prepared_target.send(data[:method], *data[:args]) try_restart_process unless target == 'process_manager' end |
#try_restart_process ⇒ Object
40 41 42 43 44 45 46 |
# File 'lib/rails_workflow/error_resolver.rb', line 40 def try_restart_process return if process.nil? || process.status == Status::DONE process.update_attribute(:status, Status::IN_PROGRESS) process.reload process_runner.start if can_restart_process? end |