RubyOnRails et les erreurs 500 (Internal Server Error) personnalisées et dynamiques

RubyOnRails

Vous en avez marre des vilaines erreurs 500 des applications rails ? Non je ne vais pas vous montrer comment utiliser CSS avec le fichier "public/500.html". BIen mieux : lever les exceptions dans une méthode !

Par exemple vous pouvez mettre ça dans application_controller.rb.

rescue_from ActionController::RoutingError, :with => :my_error
rescue_from ActionController::UnknownAction, :with => :my_error
rescue_from NoMethodError, :with => :my_error

def my_error(exception)
#le code que vous voulez mettre (redirect_to ou render)
end

Vous pouvez aussi analyser le contenu de exception et vous prévenir par mail...(attention au spam...). Du coup vous pourrez utiliser le layout de votre application pour faire le rendu de "my_error".