Ruby on rails 服务器运行时更改文件触发SystemStackError?
在我的RoR应用程序开发机器(本地服务器、OSX 10.8.1、Ruby 1.9.3、Rails 3.2.8)上,稀薄的空气中开始出现一些奇怪的东西(当然……): Rails服务器崩溃(所有路由都被终止,服务器重启是使其重新工作的唯一方法),日志条目如下:Ruby on rails 服务器运行时更改文件触发SystemStackError?,ruby-on-rails,macos,error-handling,ruby-on-rails-3.2,Ruby On Rails,Macos,Error Handling,Ruby On Rails 3.2,在我的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
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)
我在谷歌上搜索过,发现SystemStackError通常是由于一个无止境的循环造成的,但据我所能追踪到的,我的代码中没有这样的循环。错误似乎不在应用程序逻辑的某个步骤中
服务器崩溃和我的操作之间的唯一关联如下:
PS:我怀疑这是在一次不小心的“包更新”之后发生的。这可能是吗?在
rails应用程序中调试堆栈级别太深的错误消息并不容易,因为错误可能是由多种原因造成的,并且错误消息没有太大帮助
导致堆栈级别太深错误的一些原因
:
应用程序的名称不一致李>
不一致性是由以下原因引起的李>
如果错误发生在系统启动时,则此提示非常有用:
从描述来看,该应用程序似乎可以正常工作一段时间,然后开始崩溃-因此上述启动情况可能不适用
解决问题的一种方法是使用
此外,可能值得回滚更改并使系统恢复工作状态,然后以增量方式回滚更改以隔离根本原因
在这种情况下,包更新
很可能触发了错误;因此,最好检查新添加的依赖项,看看它们是否是罪魁祸首 谢谢你的回答。真正奇怪的是,它似乎出现在重新加载程序中,当我在本地更改文件时,服务器无法获得该文件,并且似乎崩溃了。当我部署到heroku时,这根本不会发生;因此,在那里没有发生错误可能也就不足为奇了。重启后,本地应用是否继续正常工作?或者它是否会在一段时间后恢复为失败,并出现相同的错误?如果我“在运行的系统下”不更改任何文件,则本地应用程序运行良好。以前在应用程序运行时更改文件是安全的,我只需重新加载网页即可进入新内容。现在,当我在更改文件和重新加载网页(而不是服务器)之间等待几秒钟时,它就可以工作了。如果我速度太快,它会崩溃。在开发过程中,您正在更改哪些文件?如果是config/initializers/
中的内容,则必须重新启动服务器。这个答案有一些相关的信息:你在用什么宝石?您是否在ActiveSupport/ActiveDispatch/等中修补了任何东西。?另外,您使用的是什么Ruby补丁版本?我在Rails 3.2.11和Ruby 1.9.3-p385上看到了这一点。Gemenv:Gemfile.lock: