[英]How do I turn off exceptions in a Rack app?
我已准备好部署 RackServerPages 应用程序,但似乎无法找到禁用异常的方法,即由 Rack::ShowExceptions 呈现的异常。
谢谢!
将RACK_ENV
环境变量设置为deployment
。
从技术上讲,将ENV['RACK_ENV']
为除development
之外的任何内容都将禁用异常。 当机架在默认development
环境中运行时, 默认情况下 包含 Rack::ShowExceptions
中间件。
对于Rails应用程序,将ENV['RACK_ENV']
为deployment
,确保您还将ENV['RAILS_ENV']
设置为适合您环境的值( production
, development
等)。 如果没有设置ENV['RAILS_ENV']
,Rails应用程序将回ENV['RACK_ENV']
,Rails会抱怨未知的deployment
环境。
如果使用unicorn
,也可以使用-E deployment
将ENV['RACK_ENV']
为deployment
。
我有几个小时不愉快的经历,试图禁用Rack::ShowExceptions
但最后我发现我不需要这样做。
在生产中,这是关闭的(当您尝试curl -XINVALID -k https://my-production-app.com
,它将仅返回空白屏幕)。
但是,如果您需要在自定义(例如“staging”)环境中禁用此功能(仍显示机架跟踪代码),则无法解决此问题。
在Rails 3.2.21
上测试
在Rails 4.0.12
这适用于我的生产和自定义“登台”环境
由于ENV['RACK_ENV']
是通用的 Rack 解决方案,基于 Rack 的框架通常具有更高级别的解决方案。
在config.rb
中可以定义:environment
。 也可以使用ENV['APP_ENV']
。
configure do
set :environment, :production
end
有一个错误处理插件。
class App < Roda
plugin :error_handler do |e|
'Oh No!'
end
end
还有一个环境插件。
class App < Roda
plugin :environments
self.environment = :production
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.