コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

Railsでよしなに40x系のレスポンスを返すExceptionの確認の仕方

ActiveRecord::RecordNotFound とかだと勝手に404ページけどほかは何があるんだろうとか思ったのでメモ

環境

rails (5.2.0)

確認の仕方

ActionDispatch::ExceptionWrapper.rescue_responses
# => {"ActionController::RoutingError"=>:not_found,
#     "AbstractController::ActionNotFound"=>:not_found,
#     "ActionController::MethodNotAllowed"=>:method_not_allowed,
#     "ActionController::UnknownHttpMethod"=>:method_not_allowed,
#     "ActionController::NotImplemented"=>:not_implemented,
#     "ActionController::UnknownFormat"=>:not_acceptable,
#     "ActionController::InvalidAuthenticityToken"=>:unprocessable_entity,
#     "ActionController::InvalidCrossOriginRequest"=>:unprocessable_entity,
#     "ActionDispatch::Http::Parameters::ParseError"=>:bad_request,
#     "ActionController::BadRequest"=>:bad_request,
#     "ActionController::ParameterMissing"=>:bad_request,
#     "Rack::QueryParser::ParameterTypeError"=>:bad_request,
#     "Rack::QueryParser::InvalidParameterError"=>:bad_request,
#     "ActiveRecord::RecordNotFound"=>:not_found,
#     "ActiveRecord::StaleObjectError"=>:conflict,
#     "ActiveRecord::RecordInvalid"=>:unprocessable_entity,
#     "ActiveRecord::RecordNotSaved"=>:unprocessable_entity}

ちなみに :bad_request などが何を示すかの原典はここらへんらしい

参考リンク