我已经准备好部署一个RackServerPages应用程序,但似乎找不到禁用异常的方法,即Rack::ShowExceptions呈现的异常。谢谢!
23c0lvtd1#
将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_ENV
deployment
ENV['RACK_ENV']
development
Rack::ShowExceptions
ENV['RAILS_ENV']
production
unicorn
-E deployment
vdzxcuhz2#
我有几个小时的不愉快的经验,未能成功地试图禁用Rack::ShowExceptions,但最后我发现我不需要这样做。在生产环境中,这是关闭的(当您尝试curl -XINVALID -k https://my-production-app.com时,它将返回空白屏幕)。但是如果你需要在自定义中禁用这个功能,这并不能解决问题(例如:“staging”)环境(仍显示机架跟踪代码。)在Rails 3.2.21上测试在Rails 4.0.12上,这适用于我的生产和自定义“staging”环境
curl -XINVALID -k https://my-production-app.com
3.2.21
4.0.12
neekobn83#
由于ENV['RACK_ENV']是通用的Rack解决方案,基于Rack的框架通常具有更高级别的解决方案。
辛纳屈在config.rb中,可以定义:environment。也可以使用ENV['APP_ENV']。
config.rb
:environment
ENV['APP_ENV']
configure do set :environment, :production end
有一个error handling plugin。
class App < Roda plugin :error_handler do |e| 'Oh No!' end end
environment插件
class App < Roda plugin :environments self.environment = :production end
3条答案
按热度按时间23c0lvtd1#
将
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
。vdzxcuhz2#
我有几个小时的不愉快的经验,未能成功地试图禁用
Rack::ShowExceptions
,但最后我发现我不需要这样做。在生产环境中,这是关闭的(当您尝试
curl -XINVALID -k https://my-production-app.com
时,它将返回空白屏幕)。但是如果你需要在自定义中禁用这个功能,这并不能解决问题(例如:“staging”)环境(仍显示机架跟踪代码。)
在Rails
3.2.21
上测试在Rails
4.0.12
上,这适用于我的生产和自定义“staging”环境neekobn83#
由于
ENV['RACK_ENV']
是通用的Rack解决方案,基于Rack的框架通常具有更高级别的解决方案。示例
辛纳屈
在
config.rb
中,可以定义:environment
。也可以使用ENV['APP_ENV']
。罗达
有一个error handling plugin。
environment插件