【问题标题】:Devise stack level too deep error设计堆栈级别太深错误
【发布时间】:2011-10-21 07:09:21
【问题描述】:

安装 Devise 后我尝试运行

**rake db:migrate**

但它给出了:

**rake aborted!
stack level too deep**

我在 Ubuntu 上,已更改

**ulimit -s unlimited**

并检查,它可以工作,但仍然有错误。

我使用 RVM,尝试使用 Ruby1.9.2-p180、Ruby-1.9.2-p0Rails 3.0.9、Rails 3.1rc4, 与 Rubinius。 尝试使用 SQLite3 和 PostgreSQL。 尝试从迁移文件中尽可能多地取消注释。

阅读所有相关的 Stackoverflow 帖子(并意识到我所拥有的实际上名为 StackOverflow)。

任何帮助都将得到高度评价!非常感谢

【问题讨论】:

  • 可能有助于发布您的迁移文件和任何可能相关的内容。

标签: ruby-on-rails ruby-on-rails-3 devise stack stack-overflow


【解决方案1】:

堆栈级别太深的错误通常是由无限递归问题引起的。

新答案:

我忘记了这是在 db:migrate 期间发生的。您的用户表迁移中的某些内容是否依赖于将依赖它的某些内容?

旧答案:

显示您在 routes.rb 文件中用于设计的代码行对您很有帮助。例如,您可能有:

devise_for :users, :controllers => { :registrations => "registration/foo" }

在这个例子中,看看 foo_controller.rb 中的新方法。如果该方法重定向到另一个控制器,导致您再次尝试注册,您将获得无限递归。

我要做的第一件事是通过在控制器中放置某种调试输出来查看正在调用的控制器。试试:

logger.debug("i am in foo")

puts "i am in bar"

如果您能提供更多信息,我也许可以提供更多帮助。

【讨论】:

  • 完美,非常感谢拉里,我真的很高兴你拯救了我的一周。现在用设计解决了所有问题,你是对的,这是一种无限循环:root 重定向到 users/sign_in。谢谢
【解决方案2】:

你试过bundle exec rake db:migrate吗?

【讨论】:

  • 是的,第一次发帖解决,自我参考。无论如何谢谢你的帮助。
猜你喜欢
  • 1970-01-01
  • 2012-04-10
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-04
  • 2013-10-05
相关资源
最近更新 更多