我在 Heroku
上托管的 Ruby on Rails 应用程序遇到问题。
无论我向存储库推送什么内容,我都会收到一个内部服务器错误
字符串,但没有关于我做错了什么的其他信息。
我决定做出的每项更改都会在本地很好地工作,但我似乎无法避免每次推送时都会导致此内部服务器错误
。我必须不断回滚并找出需要修复什么才能阻止这种情况发生。
有人给我建议吗?
更新
我将存储库回滚到稳定的变更集,然后将存储库克隆到计算机上的另一个目录。我对 javascript 文件做了一个小更改以修复一个小错误,甚至该推送也会导致网站崩溃并给出内部服务器错误
消息。我的环境有问题吗?
更新2
对于那些最近给出答案的人,请查看对该问题的评论,因为您的一些建议已经得到解决。谢谢!
答案:
我不得不承认,我仍然不明白为什么事情会这样,但是似乎在不破坏网站的情况下推送得很好的提交包含了 Rubymine 似乎没有的三元运算符头脑。在某一点之后,每次提交都会导致此内部服务器错误
。但在将三元运算符转换回 if-else-end 条件语句后,这种行为就停止了。我希望这对将来遇到类似问题的人有所帮助,尽管很晦涩。
最佳答案
我从日志中看到的主要问题是
!! Unexpected error while processing request: can't modify frozen array
在 Google 上快速搜索“rails Production 无法修改卡住数组”给出了此 related question关于SO(也关于heroku。)
您可以做的其他事情:
- 运行
heroku run script/rails console
并查找错误。 - 在您的开发计算机上安装 postgresql 并在生产模式下进行整个测试运行。这意味着使用
RAILS_ENV=product
前缀运行rake db:load_schema
、rake assets:precompile
和rails
。确保您使用的是thin
。 - 启动一个镜像 Heroku 设置的虚拟机,使用 Foreman 执行第 2 步.
- 注册 Airbrake 并检查错误。
(实际上,如果您执行了 3. 并且它仍然可以在您的本地计算机上运行,则需要联系 Heroku 支持人员。)
最后的手段:二分搜索
让我们将当前的存储库命名为 project.git
。复制此存储库,并将 master 分支重命名为 future
。将 future
的最早工作提交 checkin 新存储库的 master 分支,并创建一个新的 Heroku 应用程序。推送并测试。
- 如果没有错误,则向前跳至中点。
- 如果出现错误,则向后跳转。
- 推送并测试。重复。
继续这样做,直到找到引入该错误的确切提交。这需要很长时间。 git bisect可能有用。
关于ruby-on-rails - 无论我推送什么到heroku应用程序(Ruby on Rails),内部服务器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17646845/