method

failsafe_response_body

Importance_1
v2.1.0 - Show latest stable - 1 note - Class: ActionController::Dispatcher
  • 1.0.0
  • 1.1.6
  • 1.2.6
  • 2.0.3 (0)
  • 2.1.0 (0)
  • 2.2.1 (0)
  • 2.3.8
  • 3.0.0
  • 3.0.9
  • 3.1.0
  • 3.2.1
  • 3.2.8
  • 3.2.13
  • 4.0.2
  • 4.1.8
  • 4.2.1
  • 4.2.7
  • 4.2.9
  • 5.0.0.1
  • 5.1.7
  • 5.2.3
  • 6.0.0
  • 6.1.3.1
  • 6.1.7.7
  • 7.0.0
  • 7.1.3.2
  • 7.1.3.4
  • What's this?
failsafe_response_body(status) private

No documentation

This method has no description. You can help the Ruby on Rails community by adding new notes.

Show source
Register or log in to add new notes.
July 28, 2008 - (<= v2.1.0)
0 thanks

Bug that looks for "500 .html" rather than "500.html"

There is a very small bug in this method of Rails that causes error pages you change in public/ not to be shown, because Rails looks for “404 .html” and “500 .html” (note the space). The fix is simple.

#{status.to_s[0..3]}

needs to become

#{status.to_s[0...3]}

If you’re like me and don’t want to edit Rails itself, at the bottom of environment.rb, stick some code that overwrites this method to fix the bug. We have the following:

module ActionController
  class Dispatcher
    class << self
      private
        def failsafe_response_body(status)
          error_path = "#{error_file_path}/#{status.to_s[0...3]}.html"
          if File.exist?(error_path)
            File.read(error_path)
          else
            "<html><body><h1>#{status}</h1></body></html>"
          end
        end
    end
  end
end