所以我已经开始将我们的应用程序从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>
显然,这对我来说太过于通用了一个错误,要求“修复它!”,但是我可以开始寻找调试内容的一些建议将非常感激。这让我疯了。
更新:此问题未发生且已禁用Sprockets(即没关系,它仍然会... config.assets.enabled = false
)
答案 0 :(得分:8)
我找到了导致它的原因。
看来这是Rack中间件的一个问题。链条上的某个宝石破坏了东西(在我的例子中它是Airbrake(以前称为Hoptoad)的宝石,这可以解释为什么在任何地方都没有记录异常)。删除错误的gem或将其更新到最新版本(从git而不是规范的rubygems源安装)为我修复了它。
如果其他人偶然发现了这个问题,我建议你检查一下你的那部分。
答案 1 :(得分:0)