class Card::Error
exceptions and errors. (arguably most of these should be Card::Exception)
Constants
- KEY_MAP
Attributes
backtrace[W]
card[RW]
Public Class Methods
new(message=nil)
click to toggle source
Calls superclass method
# File lib/card/error.rb, line 24 def initialize message=nil if message.is_a? Card self.card = message message = message_from_card end super message end
report(exception, card)
click to toggle source
# File lib/card/error.rb, line 129 def report exception, card e = cardify_exception exception, card self.current = e e.report e end
rescue_card(card) { || ... }
click to toggle source
# File lib/card/error.rb, line 136 def rescue_card card yield rescue StandardError => e report e, card end
Private Class Methods
add_card_errors(card, exception)
click to toggle source
# File lib/card/error.rb, line 157 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)
click to toggle source
# File lib/card/error.rb, line 162 def card_error_class exception, card # "simple" error messages are visible to end users and are generally not # treated as software bugs (though they may be "shark" bugs) 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)
click to toggle source
# File lib/card/error.rb, line 144 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)
click to toggle source
# File lib/card/error.rb, line 175 def invalid_card_error_class card KEY_MAP.each do |key, klass| return klass if card.errors.key? key end Card::Error end
Public Instance Methods
backtrace()
click to toggle source
Calls superclass method
# File lib/card/error.rb, line 36 def backtrace @backtrace || super end
card_message_text()
click to toggle source
# File lib/card/error.rb, line 40 def card_message_text card.errors.first&.message end
message_from_card()
click to toggle source
# File lib/card/error.rb, line 32 def message_from_card ::I18n.t :lib_exception_for_card, cardname: card.name, message: card_message_text end