Module: ActiveSupport::ActionableError
Relationships & Source Files | |
Namespace Children | |
Modules:
| |
Exceptions:
| |
Extension / Inclusion / Inheritance Descendants | |
Included In:
| |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
Concern
|
|
Defined in: | activesupport/lib/active_support/actionable_error.rb |
Overview
Actionable Errors
Actionable errors lets you define actions to resolve an error.
To make an error actionable, include the ActionableError
module and invoke the action
class macro to define the action. An action needs a name and a block to execute.
Class Method Summary
- .actions(error) Internal use only
- .dispatch(error, name) Internal use only
Concern
- Extended
class_methods | Define class methods from given block. |
included | Evaluate given block in context of base class, so that you can write class macros here. |
prepended | Evaluate given block in context of base class, so that you can write class macros here. |
append_features, prepend_features |
DSL Calls
included
[ GitHub ]16 17 18
# File 'activesupport/lib/active_support/actionable_error.rb', line 16
included do class_attribute :_actions, default: {} end
Class Method Details
.actions(error)
This method is for internal use only.
[ GitHub ]
# File 'activesupport/lib/active_support/actionable_error.rb', line 20
def self.actions(error) # :nodoc: case error when ActionableError, -> it { Class === it && it < ActionableError } error._actions else {} end end
.dispatch(error, name)
This method is for internal use only.
[ GitHub ]
# File 'activesupport/lib/active_support/actionable_error.rb', line 29
def self.dispatch(error, name) # :nodoc: actions(error).fetch(name).call rescue KeyError raise NonActionable, "Cannot find action \"#{name}\"" end