Class: Serviced::Failure
Overview
A failed outcome. Carries a machine-readable reason for branching, an
optional human-readable message, and an optional error payload (for
example an exception or an ActiveModel::Errors object).
Instance Attribute Summary collapse
-
#error ⇒ Object?
readonly
Structured error payload (exception, error object, details).
-
#message ⇒ String?
readonly
Human-readable description.
-
#reason ⇒ Symbol
readonly
Machine-readable reason, suitable for case/when branching.
Instance Method Summary collapse
- #deconstruct ⇒ Object
- #deconstruct_keys(_keys) ⇒ Object
-
#initialize(reason = :error, message = nil, error: nil) ⇒ Failure
constructor
A new instance of Failure.
- #success? ⇒ Boolean
-
#value! ⇒ Object
Always raises: a failure has no value to unwrap.
Methods inherited from Result
#and_then, #failure?, #map, #on_failure, #on_success, #value
Constructor Details
#initialize(reason = :error, message = nil, error: nil) ⇒ Failure
Returns a new instance of Failure.
131 132 133 134 135 136 137 |
# File 'lib/serviced/result.rb', line 131 def initialize(reason = :error, = nil, error: nil) super() @reason = reason @message = @error = error freeze end |
Instance Attribute Details
#error ⇒ Object? (readonly)
Returns structured error payload (exception, error object, details).
126 127 128 |
# File 'lib/serviced/result.rb', line 126 def error @error end |
#message ⇒ String? (readonly)
Returns human-readable description.
123 124 125 |
# File 'lib/serviced/result.rb', line 123 def @message end |
#reason ⇒ Symbol (readonly)
Returns machine-readable reason, suitable for case/when branching.
120 121 122 |
# File 'lib/serviced/result.rb', line 120 def reason @reason end |
Instance Method Details
#deconstruct ⇒ Object
150 151 152 |
# File 'lib/serviced/result.rb', line 150 def deconstruct [reason, ] end |
#deconstruct_keys(_keys) ⇒ Object
154 155 156 |
# File 'lib/serviced/result.rb', line 154 def deconstruct_keys(_keys) { reason: reason, message: , error: error } end |
#success? ⇒ Boolean
139 140 141 |
# File 'lib/serviced/result.rb', line 139 def success? false end |
#value! ⇒ Object
Always raises: a failure has no value to unwrap.
145 146 147 148 |
# File 'lib/serviced/result.rb', line 145 def value! raise InvalidResultAccess, "Called #value! on a Failure (reason: #{reason.inspect}, message: #{.inspect})" end |