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

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

我在 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。)

您可以做的其他事情:

  1. 运行 heroku run script/rails console 并查找错误。
  2. 在您的开发计算机上安装 postgresql 并在生产模式下进行整个测试运行。这意味着使用 RAILS_ENV=product 前缀运行 rake db:load_schemarake assets:precompilerails 。确保您使用的是thin
  3. 启动一个镜像 Heroku 设置的虚拟机,使用 Foreman 执行第 2 步.
  4. 注册 Airbrake 并检查错误。

(实际上,如果您执行了 3. 并且它仍然可以在您的本地计算机上运行,​​则需要联系 Heroku 支持人员。)

最后的手段:二分搜索

让我们将当前的存储库命名为 project.git。复制此存储库,并将 master 分支重命名为 future。将 future 的最早工作提交 checkin 新存储库的 master 分支,并创建一个新的 Heroku 应用程序。推送并测试。

  1. 如果没有错误,则向前跳至中点。
  2. 如果出现错误,则向后跳转。
  3. 推送并测试。重复。

继续这样做,直到找到引入该错误的确切提交。这需要很长时间。 git bisect可能有用。

关于ruby-on-rails - 无论我推送什么到heroku应用程序(Ruby on Rails),内部服务器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17646845/

相关文章:

ruby-on-rails - rails : Paypal Express implementation fails with undefined method `checkout_thank_you_url'

ruby-on-rails - Rails3 - 为什么我的 View 加载时间这么长?

git checkout -- * 并跳过未跟踪的文件

python - 从 git 安装时,我可以强制 pip 进行浅表检查吗?

css - Rails 中的@media CSS

ruby-on-rails - 为什么我的功能规范不能在 RSpec 中运行?

ruby-on-rails - rbenv ruby​​ on rails global vs local vs shell

ruby-on-rails - 如何使用 Capybara 结合查找和内部?

ruby-on-rails - Rails 查询对象类有不同吗?

git - 为什么 git log --cherry-pick 这么慢?