From e7b89f10813e16936f305b0cc5456c7e37e8ee9a Mon Sep 17 00:00:00 2001 From: Santiago Pastorino Date: Tue, 21 Apr 2015 16:45:43 -0400 Subject: Remove Unneeded ApiPublicExceptions middleware, PublicExceptions already does the work --- actionpack/lib/action_dispatch.rb | 1 - .../middleware/api_public_exceptions.rb | 46 ---------------------- actionpack/test/dispatch/show_exceptions_test.rb | 37 ----------------- 3 files changed, 84 deletions(-) delete mode 100644 actionpack/lib/action_dispatch/middleware/api_public_exceptions.rb (limited to 'actionpack') diff --git a/actionpack/lib/action_dispatch.rb b/actionpack/lib/action_dispatch.rb index 74ddf2954a..dcd3ee0644 100644 --- a/actionpack/lib/action_dispatch.rb +++ b/actionpack/lib/action_dispatch.rb @@ -53,7 +53,6 @@ module ActionDispatch autoload :ExceptionWrapper autoload :Flash autoload :ParamsParser - autoload :ApiPublicExceptions autoload :PublicExceptions autoload :Reloader autoload :RemoteIp diff --git a/actionpack/lib/action_dispatch/middleware/api_public_exceptions.rb b/actionpack/lib/action_dispatch/middleware/api_public_exceptions.rb deleted file mode 100644 index 00c7a9622a..0000000000 --- a/actionpack/lib/action_dispatch/middleware/api_public_exceptions.rb +++ /dev/null @@ -1,46 +0,0 @@ -module ActionDispatch - class ApiPublicExceptions - attr_accessor :public_path - - def initialize(public_path) - @public_path = public_path - end - - def call(env) - exception = env["action_dispatch.exception"] - status = env["PATH_INFO"][1..-1] - request = ActionDispatch::Request.new(env) - content_type = request.formats.first - body = { :status => status, :error => exception.message } - - render(status, content_type, body) - end - - private - def render(status, content_type, body) - format = content_type && "to_#{content_type.to_sym}" - if format && body.respond_to?(format) - render_format(status, content_type, body.public_send(format)) - else - render_html(status) - end - end - - def render_format(status, content_type, body) - [status, {'Content-Type' => "#{content_type}; charset=#{ActionDispatch::Response.default_charset}", - 'Content-Length' => body.bytesize.to_s}, [body]] - end - - def render_html(status) - found = false - path = "#{public_path}/#{status}.#{I18n.locale}.html" if I18n.locale - path = "#{public_path}/#{status}.html" unless path && (found = File.exist?(path)) - - if found || File.exist?(path) - render_format(status, 'text/html', File.read(path)) - else - [404, { "X-Cascade" => "pass" }, []] - end - end - end -end diff --git a/actionpack/test/dispatch/show_exceptions_test.rb b/actionpack/test/dispatch/show_exceptions_test.rb index c70bc5f95e..a7cd56f263 100644 --- a/actionpack/test/dispatch/show_exceptions_test.rb +++ b/actionpack/test/dispatch/show_exceptions_test.rb @@ -23,7 +23,6 @@ class ShowExceptionsTest < ActionDispatch::IntegrationTest end ProductionApp = ActionDispatch::ShowExceptions.new(Boomer.new, ActionDispatch::PublicExceptions.new("#{FIXTURE_LOAD_PATH}/public")) - ProductionApiApp = ActionDispatch::ShowExceptions.new(Boomer.new, ActionDispatch::ApiPublicExceptions.new("#{FIXTURE_LOAD_PATH}/public")) test "skip exceptions app if not showing exceptions" do @app = ProductionApp @@ -56,42 +55,6 @@ class ShowExceptionsTest < ActionDispatch::IntegrationTest assert_equal "", body end - test "rescue api apps with json response" do - @app = ProductionApiApp - - get "/", headers: { 'HTTP_ACCEPT' => 'application/json', 'action_dispatch.show_exceptions' => true } - assert_response 500 - assert_equal({ :status => '500', :error => 'puke!' }.to_json, body) - - get "/method_not_allowed", headers: { 'HTTP_ACCEPT' => 'application/json', 'action_dispatch.show_exceptions' => true } - assert_response 405 - assert_equal({ :status => '405', :error => 'Only PUT requests are allowed.' }.to_json, body) - - get "/unknown_http_method", headers: { 'HTTP_ACCEPT' => 'application/json', 'action_dispatch.show_exceptions' => true } - assert_response 405 - assert_equal({ :status => '405', :error => 'ActionController::UnknownHttpMethod' }.to_json, body) - end - - test "rescue api apps unknown content-type requests with html response" do - @app = ProductionApiApp - - get "/", headers: { 'HTTP_ACCEPT' => 'application/x-custom', 'action_dispatch.show_exceptions' => true } - assert_response 500 - assert_equal "500 error fixture\n", body - - get "/bad_params", headers: { 'HTTP_ACCEPT' => 'application/x-custom', 'action_dispatch.show_exceptions' => true } - assert_response 400 - assert_equal "400 error fixture\n", body - - get "/not_found", headers: { 'HTTP_ACCEPT' => 'application/x-custom', 'action_dispatch.show_exceptions' => true } - assert_response 404 - assert_equal "404 error fixture\n", body - - get "/unknown_http_method", headers: { 'HTTP_ACCEPT' => 'application/x-custom', 'action_dispatch.show_exceptions' => true } - assert_response 405 - assert_equal("", body) - end - test "localize rescue error page" do old_locale, I18n.locale = I18n.locale, :da -- cgit v1.2.3