app/controllers/errors_controller.rb
class ErrorsController < ApplicationController
include Gaffe::Errors
# Render this page even if authenticity token checks fail.
skip_before_action :verify_authenticity_token
# Only respond with HTML or JSON, regardless of what is asked for.
before_action :override_format
def show
respond_to do |format|
format.html { render "errors/#{@rescue_response}", status: @status_code }
format.json { render json: { error: @status_code }, status: @status_code }
end
end
# GET /errors/:error_type
def simulate
valid_types = %w[
internal_server_error
not_acceptable
not_found
unprocessable_entity
service_unavailable
]
if params[:error_type].in?(valid_types)
render "errors/#{params[:error_type]}"
else
raise ":error_type should be one of #{valid_types.join(', ')}"
end
end
private
# We want requests for images and all other general content (pdf, doc, etc) to be treated as html requests.
def override_format
request.format = 'html' unless params[:format] == 'json'
end
end