【发布时间】:2012-11-21 10:18:38
【问题描述】:
在我的 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)
我用谷歌搜索发现 SystemStackError 通常是由于无限循环造成的,但据我所知,我的代码中没有这样的循环。而且错误似乎不在应用逻辑的某个步骤。
服务器崩溃与我的操作之间的唯一关联如下:
- 更改应用中的一些代码
- 重新加载应用的当前网页
- Boom,服务器消失,错误消息。
-
在此之后没有页面工作,错误是:
路由错误
没有路线匹配 [GET] "/"
尝试运行 rake 路线以获取有关可用路线的更多信息。
谁能指出我调试的正确方向,好吗? PS:我怀疑它发生在粗心的“捆绑更新”之后。可以吗?
【问题讨论】:
-
你用的是什么宝石?您是否在 ActiveSupport/ActiveDispatch/etc. 中修补任何东西?另外,您使用的是哪个补丁版本的 Ruby?
-
我在 Rails 3.2.11 和 ruby 1.9.3-p385 上看到了这个。 Gemenv:gist.github.com/coneybeare/4957822Gemfile.lock:gist.github.com/coneybeare/4957828
标签: ruby-on-rails macos error-handling ruby-on-rails-3.2