内部服务器错误,无论我推送到heroku应用程序(Ruby on Rails)

时间:2013-07-15 04:35:29

标签: ruby-on-rails ruby-on-rails-3 git heroku

我在Heroku上托管的rails应用程序上遇到了ruby问题。 无论我什么推进回购,我都会收到一条Internal Server Error字符串,但没有关于我做错的其他信息。

我决定做出的每一项改变都会在本地运作得很好,但每次推动时我似乎都无法避免导致这种情况Internal Server Error。我必须继续回滚并弄清楚我需要修复什么才能使这个停止发生。

有人对我有建议吗?

更新

我将repo回滚到一个稳定的变更集,然后我将repo克隆到我机器上的另一个目录中。我对一个javascript文件进行了一些小改动来修复一个小错误,甚至那次推送导致网站停止并发出Internal Server Error消息。我的环境有问题吗?

更新2

对于那些最近给出答案的人,请查看对该问题的评论,因为您的一些建议已经得到解决。谢谢!

答案:

我将不得不承认,我仍然不明白为什么事情的行为方式如此,但是如果没有打破网站,似乎推得很好的提交包括Rubymine似乎没有的三元运营商心神。在某一点之后,每次提交都会导致此Internal Server Error。但在将三元运算符转换回if-else-end条件语句后,此行为已停止。我希望这有助于将来有类似问题的人,虽然模糊不清。

3 个答案:

答案 0 :(得分:2)

我从日志中看到的主要问题是

!! Unexpected error while processing request: can't modify frozen array

快速Google搜索“rails production无法修改冻结数组”在SO上提供了这个related question(也是关于heroku的。)

你可以做的其他事情:

  1. 运行heroku run script/rails console并注意错误。
  2. 在开发计算机上安装postgresql,并在生产模式下执行整个测试运行。这意味着使用rake db:load_schema前缀运行rake assets:precompilerails sRAILS_ENV=production。确保您使用的是thin
  3. 启动一个镜像Heroku设置的VM,使用Foreman执行编号2。
  4. 注册Airbrake并检查错误。
  5. (实际上,如果你做了3.它仍然适用于你的本地机器,那么就该联系Heroku支持了。)

    最后的度假村:二元搜索

    我们打电话给你当前的回购project.git。复制此repo,并将master分支重命名为future。将future的最早工作提交签出到新repo的主分支中,并创建一个新的Heroku应用程序。推送和测试。

    1. 如果没有错误,请跳到中点。
    2. 如果出现错误,请向后跳。
    3. 推送和测试。重复。
    4. 保持这样做,直到找到引入错误的确切提交。这需要很长时间。 git bisect可能有用。

答案 1 :(得分:1)

在您的终端中,运行 heroku logs --tail 然后从其他终端运行push命令,看看发生了什么

答案 2 :(得分:0)

如果heroku服务器上的rails控制台正常工作,那么Rails似乎正常启动?

您是否真的在没有错误的情况下在heroku上运行rails console,或者只是出现同样的错误?

您是否尝试过在本地生产模式下运行rails服务器?

rails server -e production

就个人而言,除了内部服务器错误之外没有额外的信息,我会确保我已经注册了像Airbrake [1]这样的错误服务或设置了异常通知程序[2]

[1] https://addons.heroku.com/airbrake

[2] https://github.com/smartinez87/exception_notification