class Exceptionally::Handler

Public Class Methods

before_render(&block) click to toggle source
# File lib/exceptionally/handler.rb, line 19
def self.before_render(&block)
  @@callback = Proc.new(&block)
end
new(message = nil, status = nil, e = nil, params = nil) click to toggle source
# File lib/exceptionally/handler.rb, line 3
def initialize(message = nil, status = nil, e = nil, params = nil)
  @message = message
  @status = status || 500
  @error = e
  @params = params || {}

  # ParameterFilter moved to ActiveSupport in rails 6
  filter = defined?(ActiveSupport::ParameterFilter) ? ActiveSupport::ParameterFilter : ActionDispatch::Http::ParameterFilter
  f = filter.new(Rails.application.config.filter_parameters)
  @params = f.filter @params

  @@callback.call(@message, @status, @error, @params) if defined?(@@callback) && @@callback.respond_to?(:call)

  log
end

Public Instance Methods

log() click to toggle source
# File lib/exceptionally/handler.rb, line 23
def log
  # Log 5xx errors
  if @status >= 500 && @error
    Rails.logger.error(@error.to_s)
    Rails.logger.error("Parameters: #{@params.to_s}") unless @params.blank?
    Rails.logger.error(@error.backtrace.join("\n")) unless @error.backtrace.blank?
  end
end