railsでエラーの処理をしているんですが、エラー自体はお起こせるんですが、計画していたタイプのエラーは起こせず、しかもしかもエラー処理がされません。コードのどこが間違っているか教えてください。
ruby
1class ApplicationController < ActionController::Base 2 layout :set_layout 3 4 puts "ApplicationControllerだよ" 5 class Forbidden < ActionController::ActionControllerError; end 6 class IpAddressRejected < ActionController::ActionControllerError; end 7 8 rescue_from StandardError, with: :rescue500 9 rescue_from Forbidden, with: :rescue403 10 rescue_from IpAddressRejected, with: :rescue403 11 raise IpAddressRejected 12 puts "エラー" 13 14 private def set_layout 15 if params[:controller].match(%r{\A(staff|admin|customer)/}) 16 Regexp.last_match[1] 17 puts "set_layoutだよ" 18 else 19 "customer" 20 end 21 end 22 23 private def rescue403(e) 24 @exception = exception 25 puts "rescue403だよ" 26 render "errors/forbidden", status: 403 27 end 28 29 private def rescue500(e) 30 puts "rescue500だよ" 31 render "error/internal_server_error", status: 500 32 end 33end 34
エラーコードは想定してた403ではなくは500で、エラー処理の計画としては
def rescue500(e)
もしくは
def rescue403(e)
を実行しようと思ってたんですが、何も実行されません。
raise IpAddressRejected
以降のコードが全く実行されてないっぽいです。
We're sorry, but something went wrong.
If you are the application owner check the logs for more information.
といういつものエラー画面は表示されます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。