【发布时间】:2015-12-10 16:38:48
【问题描述】:
我的问题是我们在 SolanoCI 中收到了神秘的 504 错误,我试图找到一种干净的方法来仅在测试环境中处理它们,而不向我们的 ApplicationController 添加特定于测试的代码。
我尝试过像这样通过测试设置存根默认处理程序:
allow(ApplicationController).to receive(:timeout).and_return {
#do a bunch of stuff to try to pull out request information
}
但我发现它缺少一些可访问的重要信息,例如原始请求 url 和任何堆栈跟踪信息。
欢迎提出任何建议。
【问题讨论】:
-
504 通常表示存在一些网络连接问题(网关超时)。如果这只发生在您的测试环境中,我不鼓励编写代码来解决表面上是环境网络配置问题。与管理网络的人交谈并确定在过去几天中该特定服务器是否存在任何奇怪的连接中断可能会更有效率。
-
如问题所述,它在 SolanoCI 上运行。由于所有请求都应该在 CI 环境中进行模拟或内部处理,因此我们有责任处理它们。通常情况下,我会同意你的看法,但由于这是一个特定于测试的问题,因此怀疑这些是否是合法的 504。
-
你不能使用像 VCR 这样的东西来记录预期的响应吗?
-
@ruby_newbie 我们正在运行 VCR。即使使用 VCR 和 webmock 处理所有外部请求,这些也会发生。这就是我们需要记录的原因。
标签: ruby-on-rails ruby rspec error-handling