ruby-on-rails – 在服务器运行时通过更改文件触发SystemStackError?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 在服务器运行时通过更改文件触发SystemStackError?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的RoR应用程序开发机器(本地服务器,OSX 10.8.1,Ruby 1.9.3,Rails 3.2.8)上,奇怪的事情开始出现在稀薄的空气中(当然…):

Rails服务器崩溃(所有路由都被终止,服务器重新启动是使其重新工作的唯一方法)与以下日志条目:

SystemStackError (stack level too deep):
  actionpack (3.2.8) lib/action_dispatch/middleware/reloader.rb:70


  Rendered /Users/dekay/.rvm/gems/ruby-1.9.3-head@global/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.9ms)
  Rendered /Users/dekay/.rvm/gems/ruby-1.9.3-head@global/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (1.2ms)
  Rendered /Users/dekay/.rvm/gems/ruby-1.9.3-head@global/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (14.7ms)

我已经google了,发现SystemStackError通常是由于一个无休止的循环,但是就我可以追踪它,我的代码中没有这样的循环.并且错误似乎不在应用程序逻辑的某个步骤中.

服务器崩溃与我的动作之间唯一的相关性如下:

>更改应用程序中的一些代码
>重新加载应用程序的当前网页
> Boom,服务器不见了,错误信息.
>此后没有页面工作,错误是:

路由错误

没有路线匹配[GET]“/”

尝试运行耙子路线以获取有关可用路线的更多信息.

任何人都可以指出正确的方向来调试这个吗?
PS:我怀疑它发生在粗心的“捆绑更新”之后.这可以吗

解决方法

在rails应用程序中调试堆栈级别太深的错误消息并不容易,因为错误可能是由于各种原因,并且错误消息不是太有帮助.

导致堆栈级别太大的一些原因错误

> gems & plugins and any other dependencies应用不一致.
> Code syntax error
> applying db migrations erroneously造成的不一致.

如果在系统启动时发生错误,那么这个提示将是非常有用的:http://www.datatravels.com/technotes/2012/07/11/awesome-debugging-for-rails-boot-stacklevel-too-de/

从描述中,它看起来像应用程序工作正常一段时间,然后开始崩溃 – 所以以上启动案例可能不适用.

解决问题的一个方法是使用printf debugging隔离引起错误的特定代码行/块代码

此外,可能有必要回滚更改并使系统恢复到工作状态,然后逐步放回更改以隔离根本原因.

在这种情况下,捆绑更新很可能会触发错误;所以最好检查新添加的依赖关系,看看它们是否可以成为罪魁祸首.

原文链接:https://www.f2er.com/ruby/266336.html

猜你在找的Ruby相关文章