ruby 如何在Rack应用程序中关闭异常?

k4emjkb1  于 2023-06-22  发布在  Ruby
关注(0)|答案(3)|浏览(174)

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

23c0lvtd

23c0lvtd1#

RACK_ENV环境变量设置为deployment
从技术上讲,将ENV['RACK_ENV']设置为除development之外的任何值都将禁用异常。当机架在默认的development环境中运行时,默认情况下包含Rack::ShowExceptions中间件。
对于Rails应用程序,将ENV['RACK_ENV']设置为deployment,确保您还将ENV['RAILS_ENV']设置为您的环境的正确值(productiondevelopment等)。如果未设置ENV['RAILS_ENV'],Rails应用程序将回退到ENV['RACK_ENV'],Rails将报告未知的deployment环境。
如果您使用unicorn,您也可以使用-E deploymentENV['RACK_ENV']设置为deployment

vdzxcuhz

vdzxcuhz2#

我有几个小时的不愉快的经验,未能成功地试图禁用Rack::ShowExceptions,但最后我发现我不需要这样做。
在生产环境中,这是关闭的(当您尝试curl -XINVALID -k https://my-production-app.com时,它将返回空白屏幕)。
但是如果你需要在自定义中禁用这个功能,这并不能解决问题(例如:“staging”)环境(仍显示机架跟踪代码。)
在Rails 3.2.21上测试
在Rails 4.0.12上,这适用于我的生产和自定义“staging”环境

neekobn8

neekobn83#

由于ENV['RACK_ENV']是通用的Rack解决方案,基于Rack的框架通常具有更高级别的解决方案。

示例

辛纳屈
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

相关问题