diff --git a/actionpack/lib/action_dispatch/middleware/templates/rescues/invalid_statement.text.erb b/actionpack/lib/action_dispatch/middleware/templates/rescues/invalid_statement.text.erb index 16c3ecc331d04..99260e54a7497 100644 --- a/actionpack/lib/action_dispatch/middleware/templates/rescues/invalid_statement.text.erb +++ b/actionpack/lib/action_dispatch/middleware/templates/rescues/invalid_statement.text.erb @@ -6,6 +6,7 @@ <%= @exception.message %> <% if defined?(ActiveStorage) && @exception.message.match?(%r{#{ActiveStorage::Blob.table_name}|#{ActiveStorage::Attachment.table_name}}) %> To resolve this issue run: rails active_storage:install +<% end %> <% if defined?(ActionMailbox) && @exception.message.match?(%r{#{ActionMailbox::InboundEmail.table_name}}) %> To resolve this issue run: rails action_mailbox:install <% end %> diff --git a/railties/test/application/middleware/exceptions_test.rb b/railties/test/application/middleware/exceptions_test.rb index 87529c951c0a7..201cd40c90013 100644 --- a/railties/test/application/middleware/exceptions_test.rb +++ b/railties/test/application/middleware/exceptions_test.rb @@ -157,5 +157,28 @@ def index assert_equal 400, last_response.status assert_match "Invalid query parameters", last_response.body end + + test "displays statement invalid template correctly" do + controller :foo, <<-RUBY + class FooController < ActionController::Base + def index + raise ActiveRecord::StatementInvalid + end + end + RUBY + app.config.action_dispatch.show_exceptions = true + app.config.consider_all_requests_local = true + app.config.action_dispatch.ignore_accept_header = false + + get "/foo" + assert_equal 500, last_response.status + assert_match "Action Controller: Exception caught", last_response.body + assert_match "ActiveRecord::StatementInvalid", last_response.body + + get "/foo", {}, { "HTTP_ACCEPT" => "text/plain", "HTTP_X_REQUESTED_WITH" => "XMLHttpRequest" } + assert_equal 500, last_response.status + assert_equal "text/plain", last_response.media_type + assert_match "ActiveRecord::StatementInvalid", last_response.body + end end end