class RailsWorkflow::ErrorResolver
Default error resolver. Can be changed in configuration. Manages errors processing
Attributes
error[RW]
Public Class Methods
new(error)
click to toggle source
# File lib/rails_workflow/error_resolver.rb, line 15 def initialize(error) @error = error end
retry(error)
click to toggle source
# File lib/rails_workflow/error_resolver.rb, line 11 def self.retry(error) new(error).retry end
Public Instance Methods
config()
click to toggle source
# File lib/rails_workflow/error_resolver.rb, line 48 def config RailsWorkflow.config end
dependency_resolver()
click to toggle source
# File lib/rails_workflow/error_resolver.rb, line 64 def dependency_resolver config.dependency_resolver.new(process) end
fix_status(subject)
click to toggle source
# 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()
click to toggle source
# 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()
click to toggle source
# File lib/rails_workflow/error_resolver.rb, line 56 def operation_runner config.operation_runner.new(operation) end
prepared_target()
click to toggle source
# 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()
click to toggle source
# File lib/rails_workflow/error_resolver.rb, line 52 def process_manager config.process_manager.new(process) end
process_runner()
click to toggle source
# File lib/rails_workflow/error_resolver.rb, line 68 def process_runner config.process_runner.new(process) end
retry()
click to toggle source
# 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()
click to toggle source
# 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