En el frente de prueba, una buena forma de hacerlo (con fines de desarrollo, al menos) es usar Passenger y establecer el entorno de raíles en producción (o comentar "RailsEnv development" en la configuración del sitio). Al menos de esta manera puedes imitar cómo funciona en producción.
Pero, para hacer esto, tengo una variedad de archivos de configuración que se analizan al iniciar y se recogen según el entorno. Una de las configuraciones es si mostrar páginas de error (AppSettings.show_page_errors?).Luego, en mi Controlador de aplicación, tengo
if !AppSettings.show_page_errors?
alias_method :rescue_action_locally, :rescue_action_in_public
end
Por lo tanto, en general se establece en la configuración predeterminada, pero a veces realmente tengo que ver lo que está pasando exactamente, por lo que puedo apagarlo en la producción.
El otro paso es usar páginas personalizadas. En mi caso, tengo plantillas basadas en el error que también incluyen un formulario para enviar a los formularios de Google (ya que mi servidor puede estar roto). Para hacer eso, poner esto (y cambiar según sea necesario) en su Controlador de aplicación:
def render_optional_error_file(status_code)
status = interpret_status(status_code)
render :template => "/errors/#{status.to_s[0,3]}.html.haml", :status => status, :layout => 'application.html.haml' if [404, 422, 500].include?(status)
render :template => "/errors/unknown.html.haml", :status => status, :layout => 'application.html.haml' unless [404, 422, 500].include?(status)
end
Esto hará que los códigos de estado 404, 422 y 500 con la plantilla, pero por lo demás utiliza desconocido. Si necesita manejar otros, es solo cuestión de actualizar este método y agregar la plantilla.
No rails 3 amistoso – AnApprentice
@AnApp podría ser ... es una respuesta antigua: podría publicar la versión de Rails 3 como una respuesta separada. – Gishu
¿Cuál es la versión de Rails 3? –