2019-07-10 22:07:39 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
# Gestiona las excepciones que lanzamos desde los controladores
|
|
|
|
module ExceptionHandler
|
|
|
|
extend ActiveSupport::Concern
|
|
|
|
|
|
|
|
class SiteNotFound < StandardError; end
|
2020-08-29 23:21:45 +00:00
|
|
|
class PageNotFound < StandardError; end
|
2019-07-10 22:07:39 +00:00
|
|
|
|
|
|
|
included do
|
|
|
|
rescue_from SiteNotFound, with: :site_not_found
|
2020-08-29 23:21:45 +00:00
|
|
|
rescue_from PageNotFound, with: :page_not_found
|
|
|
|
rescue_from ActionController::RoutingError, with: :page_not_found
|
|
|
|
rescue_from Pundit::NilPolicyError, with: :page_not_found
|
2024-03-14 14:45:33 +00:00
|
|
|
rescue_from Pundit::NilPolicyError, with: :page_not_found
|
|
|
|
rescue_from ActionController::RoutingError, with: :page_not_found
|
|
|
|
rescue_from ActionController::ParameterMissing, with: :page_not_found
|
2019-07-10 22:07:39 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
def site_not_found
|
2024-03-14 14:45:33 +00:00
|
|
|
reset_response!
|
|
|
|
|
|
|
|
flash[:error] = I18n.t('errors.site_not_found')
|
|
|
|
|
2019-07-10 22:07:39 +00:00
|
|
|
redirect_to sites_path
|
|
|
|
end
|
2020-08-29 23:21:45 +00:00
|
|
|
|
|
|
|
def page_not_found
|
2024-03-14 14:45:33 +00:00
|
|
|
reset_response!
|
|
|
|
|
|
|
|
render 'application/page_not_found', status: :not_found
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def reset_response!
|
|
|
|
self.response_body = nil
|
|
|
|
@_response_body = nil
|
|
|
|
|
|
|
|
headers.delete('Location')
|
2020-08-29 23:21:45 +00:00
|
|
|
end
|
2019-07-10 22:07:39 +00:00
|
|
|
end
|