代码之家  ›  专栏  ›  技术社区  ›  MattiSG

在任何故障情况下,如何使用Ruby on Rails显示自定义错误页面?

  •  0
  • MattiSG  · 技术社区  · 6 年前

    我知道如果在我的主应用程序中出现异常,我可以使用 exceptions_app 为动态错误页提供服务的配置属性。

    但是,如果此错误页是动态的,它也可能会失败。在我的例子中,我正在与主应用程序共享一些显示逻辑,而该逻辑恰好是异常的来源,呈现错误页面时再次引发异常。然后,我的最终用户看到了乘客错误页面,该页面是紫色的,很奇怪,很可怕。

    如何可靠地向用户显示自定义错误页面(可能是静态页面回退)?

    1 回复  |  直到 6 年前
        1
  •  4
  •   MattiSG    6 年前

    实际上,根据堆栈的不同,有一系列配置开关和重定向可能性。

    这是一个显示所有可能性的决策流程图。如果您有一个动态错误页面,那么还应该在 public/500.html ,并将其符号链接到其他文件,并在web服务器中引用该文件(在图中,Apaches ErrorDocument ).

    你不能简单地服务 public/<HTTP status code>.html 直接地实际上,web服务器会考虑 /<HTTP status code> 请求作为对静态页面的请求,我们的错误控制器将不再触发Rails路由,从而抢占动态错误显示。

    您应该设置 config.action_dispatch.show_exceptions false ( more details ),以及禁用app runner(图表中的乘客)错误页面,否则将泄漏异常内容。

    Ruby on Rails 3 custom errors decision flow

    如果您想进入该详细级别,那么在用户隐藏的、自动断开的页面上添加集成测试是非常重要的,因为您正在禁用一些调试和故障保护功能。

    工具书类

    您还可能对以下参考文献感兴趣: