耙子流产了!堆栈级别太深

时间:2010-08-11 07:43:33

标签: ruby stack-overflow ruby-1.9.1

  

可能重复:
  Rails 3.0 & Ruby 1.9.2rc: Rake commands return 'already initialized constant' & stack level too deep errors. Any ideas

在Windows Vista上使用Ruby版本1.9.1。我正在使用任何rake命令得到rake aborted错误。这不会发生在我的所有app文件夹中。它只发生在特定的应用程序文件夹中。

C:\rails_project\stunetwork>rake db:reset
(in C:/rails_project/stunetwork)
rake aborted!
stack level too deep
C:/Ruby191/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2383:in `raw_load_rak
efile'
(See full trace by running task with --trace)

6 个答案:

答案 0 :(得分:21)

尝试将bundle exec放在rake命令前面。

bundle exec rake -T

答案 1 :(得分:3)

您需要更新您的宝石。 我用gem'1.8.10'遇到了这个错误,并通过升级到1.8.16来修复

gem update --system

答案 2 :(得分:2)

我只通过rvm与ruby-1.9.2-p180有这个问题。

切换到ruby-1.9.2-p0修复了问题。 尝试“rvm使用1.9.2-p0”

答案 3 :(得分:0)

调用的堆栈可能取决于你安装的宝石(一些gems monkeypatch rails任务),这解释了为什么你会在特定应用程序而不是其他应用程序上遇到这种情况。

在unix系统上,您可以尝试使用ulimit命令来增加堆栈大小。在Windows方面我还没有找到解决方案。

根据您在Windows上使用的ruby版本,您可能需要向维护人员询问如何增加堆栈。

对于ruby安装程序,您需要安装mingw编译环境,克隆github repository并重新编译您使用的ruby(我承认不是很性感)。

答案 4 :(得分:0)

我刚刚在Ubuntu上遇到了这个确切的错误消息,并且能够通过downgrading rubygems从1.8.3到1.7.1解决它。

答案 5 :(得分:0)

Yehuda Katz发表了一篇很好的文章解释了为什么没有bundle exec可能存在版本冲突: http://yehudakatz.com/2011/05/30/gem-versioning-and-bundler-doing-it-right/

还有bundle install --binstubs命令允许版本安全地运行rake db:reset,如下所示:bin/rake db:reset