【问题标题】:How do I turn off exceptions in a Rack app?如何关闭 Rack 应用程序中的异常?
【发布时间】:2012-04-16 03:35:44
【问题描述】:

我已准备好部署 RackServerPages 应用程序,但似乎找不到禁用异常的方法,即由 Rack::ShowExceptions 呈现的异常。

谢谢!

【问题讨论】:

  • 确保在生产模式下您的机架堆栈中没有它。
  • 这当然是一个选项,但我没有办法在 config.ru 中将其关闭吗?
  • @matt try curl -XINVALID -k https://my-app.com 这是一个默认的机架堆栈跟踪中间件

标签: ruby rack


【解决方案1】:

RACK_ENV 环境变量设置为deployment

从技术上讲,将ENV['RACK_ENV'] 设置为development 以外的任何值都会禁用异常。当机架在default development environment 中运行时,Rack::ShowExceptions 中间件是included by default

对于 Rails 应用,将 ENV['RACK_ENV'] 设置为 deployment,并确保将 ENV['RAILS_ENV'] 设置为适合您环境的正确值(productiondevelopment 等)。如果未设置ENV['RAILS_ENV'],Rails 应用程序将回退到ENV['RACK_ENV'],Rails 将抱怨未知的deployment 环境。

如果您使用unicorn,您也可以将use -E deployment 设置为ENV['RACK_ENV']deployment

【讨论】:

    【解决方案2】:

    我有几个小时的不愉快经历,尝试禁用Rack::ShowExceptions 失败,但最后我发现我不需要这样做。

    在生产中,此功能已关闭(当您尝试 curl -XINVALID -k https://my-production-app.com 时,它将仅返回空白屏幕)。

    但如果您需要在自定义(例如“暂存”)环境中禁用此功能(仍显示机架跟踪代码),这将无法解决问题。

    在 Rails 上测试3.2.21

    在 Rails 4.0.12 这适用于我的生产和自定义“登台”环境

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-30
      • 2016-05-18
      • 2011-03-21
      • 1970-01-01
      • 1970-01-01
      • 2017-09-13
      • 1970-01-01
      相关资源
      最近更新 更多