module Sinatra::ErrorHandler

Public Instance Methods

enable_errors() click to toggle source
# File lib/sinatra/handlers/errors.rb, line 6
def enable_errors
  p "Enabling errors..."
  ErrorHandler.setup_dir("/app/views/#{Hexacta::GEM_FILE_DIR}/errors")

  error_template(404)
  error_template(403)
  error_template(500)
  error_template(Sequel::DatabaseDisconnectError)
  error_template(Sequel::DatabaseConnectionError)
end
error_template(code) click to toggle source
# File lib/sinatra/handlers/errors.rb, line 17
def error_template(code)
  if code.is_a? Numeric
    template_code = code
  else
    template_code = code.to_s.split('::').last
  end
  ErrorHandler.copy_file("/lib/sinatra/views/errors/#{template_code}.slim","/app/views/#{Hexacta::GEM_FILE_DIR}/errors/#{template_code}.slim")
  error code do
    if code == 500
      title = env['sinatra.error'].message
      message = (["in #{request.url}"] + env['sinatra.error'].backtrace).join(',');
      NotificationSender.instance.send_error(authenticated(User),title,message)
    end
    slim "#{Hexacta::GEM_FILE_DIR}/errors/#{template_code}".to_sym, locals: { :params => params }
  end
end