開発環境を使用して、私のRailsアプリで500エラーページをテストしたいと思います。
私はすでにこれを試しましたconfig/environments/development.rb
:
config.action_controller.consider_all_requests_local = false
しかし、これは効果がないようです。
次のいずれかを行うことができます。
local_request?
のapplication_controller.rb
を次のようにオーバーライドします。def local_request? false end
2番目は停止しますRails localhostおよび127.0.0.1からのリクエストをconsider_all_requests_local = false
と組み合わせたローカルリクエストとして処理すると、500.htmlページが表示されます。
これまでにこれを行うことがわかった唯一の方法は、development.rb
を設定することです
config.consider_all_requests_local = false
次に、ローカルIPアドレスを使用してURLにアクセスします:http://192.168.1.135:3000/blah
上記の他の設定は効果がないようです。
提案された解決策はどれもmy Rails 3 app。で機能しませんでした。私にとってすばやくて汚い解決策は、エラーページに直接アクセスして、レンダリングされたHTMLを確認することでした。たとえば、
http://0.0.0.0:3000/404.html
http://0.0.0.0:3000/500.html
http:// localhost:3000/404 または/ 500を実行して、これらのページにアクセスし、どのように表示されるかを確認してください。
設定に加えて:config.consider_all_requests_local = false
設定する必要もありました:config.action_dispatch.show_exceptions = true
以下の行をapplication_controllerに追加する必要があります。
unless ActionController::Base.consider_all_requests_local
rescue_from Exception, :with => :render_500
if ActiveRecord::RecordNotFound
rescue_from Exception, :with => :render_404
end
rescue_from ActionController::RoutingError, :with => :render_404
rescue_from ActionController::UnknownController, :with => :render_404
rescue_from ActionController::UnknownAction, :with => :render_404
end
次に、以下の設定で実行してみてください。
config.action_controller.consider_all_requests_local = false
in config/environments/development.rb:
それが動作します。 application_controller.rbに関数を記述して、各エラーメッセージのレイアウトを表示することを忘れないでください。
500エラーを強制的に表示させたい場合は、これをビューに追加するだけです。
hamlの例:
= render :partial => "broken", :status => 500
私がいじくるのに適切な設定はこれだと思います:
config.action_view.debug_rjs = false
なぜそれがrjs
とラベル付けされているのかは完全には明らかではありません。