Exception: Card::Error
- Inherits:
-
StandardError
- Object
- StandardError
- Card::Error
show all
- Defined in:
- lib/card/error.rb
Overview
exceptions and errors.
(arguably most of these should be Card::Exception)
Defined Under Namespace
Classes: Abort, BadAddress, BadQuery, CodenameNotFound, EditConflict, NotFound, PermissionDenied, ServerError, UserError
Constant Summary
collapse
- KEY_MAP =
{ permission_denied: PermissionDenied,
conflict: EditConflict }.freeze
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(message = nil) ⇒ Error
Returns a new instance of Error.
16
17
18
19
20
21
22
|
# File 'lib/card/error.rb', line 16
def initialize message=nil
if message.is_a? Card
self.card = message
message = message_from_card
end
super message
end
|
Instance Attribute Details
#backtrace ⇒ Object
29
30
31
|
# File 'lib/card/error.rb', line 29
def backtrace
@backtrace || super
end
|
#card ⇒ Object
Returns the value of attribute card.
14
15
16
|
# File 'lib/card/error.rb', line 14
def card
@card
end
|
Class Method Details
.add_card_errors(card, exception) ⇒ Object
136
137
138
139
|
# File 'lib/card/error.rb', line 136
def add_card_errors card, exception
label = exception.class.to_s.split("::").last
card.errors.add label, exception.message
end
|
.card_error_class(exception, card) ⇒ Object
141
142
143
144
145
146
147
148
149
150
151
152
|
# File 'lib/card/error.rb', line 141
def card_error_class exception, card
case exception
when ActiveRecord::RecordInvalid
invalid_card_error_class card
when ActiveRecord::RecordNotFound, ActionController::MissingFile
Card::Error::NotFound
else
Card::Error::ServerError
end
end
|
.cardify_exception(exception, card) ⇒ Object
123
124
125
126
127
128
129
130
131
132
133
134
|
# File 'lib/card/error.rb', line 123
def cardify_exception exception, card
card_exception =
if exception.is_a? Card::Error
exception
else
card_error_class(exception, card).new exception.message
end
card_exception.card ||= card
card_exception.backtrace ||= exception.backtrace
add_card_errors card, card_exception if card.errors.empty?
card_exception
end
|
.invalid_card_error_class(card) ⇒ Object
154
155
156
157
158
159
|
# File 'lib/card/error.rb', line 154
def invalid_card_error_class card
KEY_MAP.each do |key, klass|
return klass if card.errors.key? key
end
Card::Error
end
|
.report(exception, card) ⇒ Object
116
117
118
119
120
121
|
# File 'lib/card/error.rb', line 116
def report exception, card
e = cardify_exception exception, card
self.current = e
e.report
e
end
|
Instance Method Details
#card_message_text ⇒ Object
37
38
39
|
# File 'lib/card/error.rb', line 37
def card_message_text
card.errors.first&.message
end
|
#message_from_card ⇒ Object
24
25
26
27
|
# File 'lib/card/error.rb', line 24
def message_from_card
I18n.t :exception_for_card,
scope: %i[lib card error], cardname: card.name, message: card_message_text
end
|
#report ⇒ Object
33
34
35
|
# File 'lib/card/error.rb', line 33
def report
Rails.logger.info "exception = #{self.class}: #{message}"
end
|