我在Heroku
上托管的rails应用程序上遇到了ruby问题。
无论我什么推进回购,我都会收到一条Internal Server Error
字符串,但没有关于我做错的其他信息。
我决定做出的每一项改变都会在本地运作得很好,但每次推动时我似乎都无法避免导致这种情况Internal Server Error
。我必须继续回滚并弄清楚我需要修复什么才能使这个停止发生。
有人对我有建议吗?
我将repo回滚到一个稳定的变更集,然后我将repo克隆到我机器上的另一个目录中。我对一个javascript文件进行了一些小改动来修复一个小错误,甚至那次推送导致网站停止并发出Internal Server Error
消息。我的环境有问题吗?
对于那些最近给出答案的人,请查看对该问题的评论,因为您的一些建议已经得到解决。谢谢!
我将不得不承认,我仍然不明白为什么事情的行为方式如此,但是如果没有打破网站,似乎推得很好的提交包括Rubymine似乎没有的三元运营商心神。在某一点之后,每次提交都会导致此Internal Server Error
。但在将三元运算符转换回if-else-end
条件语句后,此行为已停止。我希望这有助于将来有类似问题的人,虽然模糊不清。
答案 0 :(得分:2)
我从日志中看到的主要问题是
!! Unexpected error while processing request: can't modify frozen array
快速Google搜索“rails production无法修改冻结数组”在SO上提供了这个related question(也是关于heroku的。)
你可以做的其他事情:
heroku run script/rails console
并注意错误。rake db:load_schema
前缀运行rake assets:precompile
,rails s
和RAILS_ENV=production
。确保您使用的是thin
。(实际上,如果你做了3.它仍然适用于你的本地机器,那么就该联系Heroku支持了。)
我们打电话给你当前的回购project.git
。复制此repo,并将master分支重命名为future
。将future
的最早工作提交签出到新repo的主分支中,并创建一个新的Heroku应用程序。推送和测试。
保持这样做,直到找到引入错误的确切提交。这需要很长时间。 git bisect可能有用。
答案 1 :(得分:1)
在您的终端中,运行 heroku logs --tail 然后从其他终端运行push命令,看看发生了什么
答案 2 :(得分:0)
如果heroku服务器上的rails控制台正常工作,那么Rails似乎正常启动?
您是否真的在没有错误的情况下在heroku上运行rails console,或者只是出现同样的错误?
您是否尝试过在本地生产模式下运行rails服务器?
rails server -e production
就个人而言,除了内部服务器错误之外没有额外的信息,我会确保我已经注册了像Airbrake [1]这样的错误服务或设置了异常通知程序[2]