class SoftRescue::ExceptionHandler

handles exceptions according to Config settings

Public Class Methods

new(exception, on_failure, message) click to toggle source
# File lib/soft_rescue.rb, line 33
def initialize(exception, on_failure, message)
  @exception = exception
  @on_failure = on_failure
  @message = message
end

Public Instance Methods

handle() click to toggle source
# File lib/soft_rescue.rb, line 39
def handle
  raise @exception unless Config.enabled
  raise_alternative
end

Private Instance Methods

capture_exception() click to toggle source
# File lib/soft_rescue.rb, line 59
def capture_exception
  capturer = Config.capture_exception
  return unless capturer
  capturer.call @exception
end
handle_failure() click to toggle source
# File lib/soft_rescue.rb, line 65
def handle_failure
  @on_failure.is_a?(Proc) ? @on_failure.call : @on_failure
end
log() click to toggle source
# File lib/soft_rescue.rb, line 52
def log
  logger = Config.logger
  return unless logger

  logger.error [@message, @exception.message].compact.join('. ')
end
raise_alternative() click to toggle source
# File lib/soft_rescue.rb, line 46
def raise_alternative
  log
  capture_exception
  handle_failure
end