Rails hace esto automáticamente cuando se ejecuta en modo de producción. Cuando carga su aplicación a un servidor en vivo, Rails se encarga de manejar esas excepciones y de mostrar las páginas de error correctas con el estado correcto del encabezado. Si está tratando de ver cómo son esas páginas (para pruebas o algo así), acceda a ellas directamente a través del http://localhost:3000/404.html
Cada vez que configure su aplicación Rails en un servidor en vivo (usemos Apache como ejemplo), usted proporcione la raíz del sitio como la carpeta /public
en su aplicación. Luego, cada vez que se realiza una solicitud a esa dirección de servidor, Apache primero busca en esa carpeta pública e intenta servir un activo estático (esta es una opción configurable en [environment].rb
). Si no puede encontrar la página solicitada, la solicitud se reenvía a través de la pila de Ruby.
En modo de producción, si Rails encuentra un error que no se maneja (es decir, comenzar, rescatar), arroja el error hasta la pila, que luego le dice a Apache (nuevamente, en mi ejemplo) que renderizar un error apropiado.
Éstos son algunos errores comunes que usted verá en el modo de desarrollo y lo que hacen en el modo de producción:
ActiveRecord::RecordNotFound => 404 (page not found)
nil.method => 500 (server error) unless you turn off whiny nils
ActionController::RoutingError => 404 (page not found)
Pensé que poner 404.htm y 500.htm en la carpeta pública está bien. Pero no estoy seguro. – PeterWong
Obtuve esos por defecto. Pero no aparecen si se producen errores – daniel