使用Rails 3.1间歇性地"脚本标题的过早结束"

Edd*_*gan 3 apache ruby-on-rails passenger ruby-on-rails-3.1

所以我开始从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>
Run Code Online (Sandbox Code Playgroud)

显然,对于我来说,"修复它!"这是一个非常通用的错误,但是对于我可以开始调试正在进行的操作的一些建议将非常感激.这让我疯了.

更新:禁用Sprockets(即)时不会发生此问题config.assets.enabled = false 没关系,它仍然......

Edd*_*gan 8

我找到了导致它的原因.

看来这是Rack中间件的一个问题.链条上的某个宝石破坏了东西(在我的例子中它是Airbrake(以前称为Hoptoad)的宝石,这可以解释为什么在任何地方都没有记录异常).删除错误的gem或将其更新到最新版本(从git而不是规范的rubygems源安装)为我修复它.

如果其他人偶然发现了这个问题,我建议你检查你的那部分.