Ruby on rails 服务器运行时更改文件触发SystemStackError?

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

在我的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通常是由于一个无止境的循环造成的,但据我所能追踪到的,我的代码中没有这样的循环。错误似乎不在应用程序逻辑的某个步骤中

服务器崩溃和我的操作之间的唯一关联如下:

  • 更改应用程序中的一些代码
  • 重新加载应用程序的当前网页
  • 爆炸,服务器消失,错误消息
  • 在此之后没有页面工作,错误为:

    路由错误

    没有与[GET]匹配的路由“/”

    尝试运行rake路由以获取有关可用路由的更多信息

  • 有人能告诉我调试这个的正确方向吗?
    PS:我怀疑这是在一次不小心的“包更新”之后发生的。这可能是吗?

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

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

  • 应用程序的名称不一致
  • 不一致性是由以下原因引起的 如果错误发生在系统启动时,则此提示非常有用:

    从描述来看,该应用程序似乎可以正常工作一段时间,然后开始崩溃-因此上述启动情况可能不适用

    解决问题的一种方法是使用

    此外,可能值得回滚更改并使系统恢复工作状态,然后以增量方式回滚更改以隔离根本原因


    在这种情况下,
    包更新
    很可能触发了错误;因此,最好检查新添加的依赖项,看看它们是否是罪魁祸首

    谢谢你的回答。真正奇怪的是,它似乎出现在重新加载程序中,当我在本地更改文件时,服务器无法获得该文件,并且似乎崩溃了。当我部署到heroku时,这根本不会发生;因此,在那里没有发生错误可能也就不足为奇了。重启后,本地应用是否继续正常工作?或者它是否会在一段时间后恢复为失败,并出现相同的错误?如果我“在运行的系统下”不更改任何文件,则本地应用程序运行良好。以前在应用程序运行时更改文件是安全的,我只需重新加载网页即可进入新内容。现在,当我在更改文件和重新加载网页(而不是服务器)之间等待几秒钟时,它就可以工作了。如果我速度太快,它会崩溃。在开发过程中,您正在更改哪些文件?如果是
    config/initializers/
    中的内容,则必须重新启动服务器。这个答案有一些相关的信息:你在用什么宝石?您是否在ActiveSupport/ActiveDispatch/等中修补了任何东西。?另外,您使用的是什么Ruby补丁版本?我在Rails 3.2.11和Ruby 1.9.3-p385上看到了这一点。Gemenv:Gemfile.lock: