所以我开始将我们的应用程序从 Rails 3.0.9 升级到 Rails 3.1。
它在开发环境中运行良好。是时候将其放到临时服务器上了,这样我们就可以运行一些完整的验收测试——但是哦,不!我们正面临着可怕的“内部服务器错误“页面有一半的时间返回给我们,看起来是随机的。我们使用的是 Ruby 1.9.2 (p290) Apache (2) 和 Passenger (3.0.9)。
当这些发生时(即使在最低日志级别),绝对不会将任何内容写入我们应用程序的日志文件。
写入 Apache 日志的唯一内容如下:
[Fri Dec 02 14:36:15 2011] [error] [client <my ip>] Premature end of script headers: <requested path>, referer: <http://domain.com/referrer>
显然,对于我来说,这是一个太普遍的错误,无法要求“修复它!”,但是关于我可以从哪里开始调试正在发生的事情的一些建议将不胜感激。这让我抓狂。
UPDATE: This problem does not occur with Sprockets disabled (i.e. config.assets.enabled = false
) Never mind, it still does...
我找到了造成这种情况的原因。
看来这是 Rack 中间件的问题。链上某处的宝石正在破坏东西(在我的例子中,它是 Airbrake(以前称为 Hoptoad)宝石,这可以解释为什么在任何地方都没有记录异常)。删除错误的 gem 或将其更新到最新版本(从 git 安装而不是规范的 rubygems 源)为我修复了它。
如果其他人偶然发现这个问题,我建议您检查堆栈的该部分。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)