ruby-on-rails – 在服务器运行时通过更改文件触发SystemStackEr
在我的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通常是由于一个无休止的循环,但是就我可以追踪它,我的代码中没有这样的循环.并且错误似乎不在应用程序逻辑的某个步骤中. 服务器崩溃与我的动作之间唯一的相关性如下: >更改应用程序中的一些代码 路由错误 没有路线匹配[GET]“/” 尝试运行耙子路线以获取有关可用路线的更多信息. 任何人都可以指出正确的方向来调试这个吗? 解决方法
在rails应用程序中调试堆栈级别太深的错误消息并不容易,因为错误可能是由于各种原因,并且错误消息不是太有帮助.
导致堆栈级别太大的一些原因错误: > gems & plugins and any other dependencies应用不一致. 如果在系统启动时发生错误,那么这个提示将是非常有用的:http://www.datatravels.com/technotes/2012/07/11/awesome-debugging-for-rails-boot-stacklevel-too-de/ 从描述中,它看起来像应用程序工作正常一段时间,然后开始崩溃 – 所以以上启动案例可能不适用. 解决问题的一个方法是使用printf debugging隔离引起错误的特定代码行/块代码 此外,可能有必要回滚更改并使系统恢复到工作状态,然后逐步放回更改以隔离根本原因. 在这种情况下,捆绑更新很可能会触发错误;所以最好检查新添加的依赖关系,看看它们是否可以成为罪魁祸首. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |