【问题标题】:“Stack level too deep” running rake db:create:all“堆栈级别太深”运行 rake db:create:all
【发布时间】:2011-11-11 06:24:04
【问题描述】:

当我运行 rake db:create:all 时,我收到以下消息:

/Users/junior/.rvm/gems/ruby-1.9.2-p290@global/gems/rake-0.9.2/lib/rake/version.rb:4: warning: already initialized constant MAJOR
/Users/junior/.rvm/gems/ruby-1.9.2-p290@global/gems/rake-0.9.2/lib/rake/version.rb:5: warning: already initialized constant MINOR
/Users/junior/.rvm/gems/ruby-1.9.2-p290@global/gems/rake-0.9.2/lib/rake/version.rb:6: warning: already initialized constant BUILD
/Users/junior/.rvm/gems/ruby-1.9.2-p290@global/gems/rake-0.9.2/lib/rake/version.rb:3: warning: already initialized constant NUMBERS
/Users/junior/.rvm/gems/ruby-1.9.2-p290@global/gems/rake-0.9.2/lib/rake/version.rb:9: warning: already initialized constant VERSION
/Users/junior/.rvm/gems/ruby-1.9.2-p290@global/gems/rake-0.9.2/lib/rake.rb:26: warning: already initialized constant RAKEVERSION
/Users/junior/.rvm/gems/ruby-1.9.2-p290@global/gems/rake-0.9.2/lib/rake/early_time.rb:17: warning: already initialized constant EARLY
/Users/junior/.rvm/gems/ruby-1.9.2-p290@global/gems/rake-0.9.2/lib/rake/alt_system.rb:32: warning: already initialized constant WINDOWS
/Users/junior/.rvm/gems/ruby-1.9.2-p290@global/gems/rake-0.9.2/lib/rake/application.rb:28: warning: already initialized constant DEFAULT_RAKEFILES
WARNING: Possible conflict with Rake extension: String#ext already exists
WARNING: Possible conflict with Rake extension: String#pathmap already exists
/Users/junior/.rvm/gems/ruby-1.9.2-p290@global/gems/rake-0.9.2/lib/rake/task_arguments.rb:73: warning: already initialized constant EMPTY_TASK_ARGS
/Users/junior/.rvm/gems/ruby-1.9.2-p290@global/gems/rake-0.9.2/lib/rake/invocation_chain.rb:49: warning: already initialized constant EMPTY
/Users/junior/.rvm/gems/ruby-1.9.2-p290@global/gems/rake-0.9.2/lib/rake/file_utils.rb:10: warning: already initialized constant RUBY
/Users/junior/.rvm/gems/ruby-1.9.2-p290@global/gems/rake-0.9.2/lib/rake/file_utils.rb:84: warning: already initialized constant LN_SUPPORTED
/Users/junior/.rvm/gems/ruby-1.9.2-p290@global/gems/rake-0.9.2/lib/rake/dsl_definition.rb:143: warning: already initialized constant Commands
/Users/junior/.rvm/gems/ruby-1.9.2-p290@global/gems/rake-0.9.2/lib/rake/file_list.rb:44: warning: already initialized constant ARRAY_METHODS
/Users/junior/.rvm/gems/ruby-1.9.2-p290@global/gems/rake-0.9.2/lib/rake/file_list.rb:47: warning: already initialized constant MUST_DEFINE
/Users/junior/.rvm/gems/ruby-1.9.2-p290@global/gems/rake-0.9.2/lib/rake/file_list.rb:51: warning: already initialized constant MUST_NOT_DEFINE
/Users/junior/.rvm/gems/ruby-1.9.2-p290@global/gems/rake-0.9.2/lib/rake/file_list.rb:55: warning: already initialized constant SPECIAL_RETURN
/Users/junior/.rvm/gems/ruby-1.9.2-p290@global/gems/rake-0.9.2/lib/rake/file_list.rb:61: warning: already initialized constant DELEGATING_METHODS
/Users/junior/.rvm/gems/ruby-1.9.2-p290@global/gems/rake-0.9.2/lib/rake/file_list.rb:364: warning: already initialized constant DEFAULT_IGNORE_PATTERNS
/Users/junior/.rvm/gems/ruby-1.9.2-p290@global/gems/rake-0.9.2/lib/rake/file_list.rb:370: warning: already initialized constant DEFAULT_IGNORE_PROCS
/Users/junior/.rvm/gems/ruby-1.9.2-p290@global/gems/rake-0.9.2/lib/rake.rb:64: warning: already initialized constant FileList
/Users/junior/.rvm/gems/ruby-1.9.2-p290@global/gems/rake-0.9.2/lib/rake.rb:65: warning: already initialized constant RakeFileUtils
rake aborted!
stack level too deep

并且没有创建数据库。有人可以帮我吗?

【问题讨论】:

    标签: ruby rake


    【解决方案1】:

    我在互联网上找到了如何避免错误的提示。请参阅"Rail 3.1 and Rake aborted" 的链接。没有给出任何理由,但是使用bundle exec rake 而不是纯粹的 rake 调用就可以解决问题。似乎对 rake 的调用正在递归调用自身,而没有注意到文件已加载。

    所以试一试,告诉我们这是否适合你。

    【讨论】:

    • 是的,rake 问题的常见根源是忘记通过bundle exec 调用它。对于那些经常忘记事情的人来说,拨打bundle exec bash 会有所帮助。
    • 这有帮助。从 10.4.2 升级后,仅在 rake 12.3.0 中获得此功能,但与 rake 相比,使用 bundle exec rake 不再抛出警告
    【解决方案2】:

    如果你和我一样懒得每次都用bundle

    想看魔术吗?尝试运行gem uninstall rake。当被问及损坏的依赖项时确认。违反直觉,我知道。

    现在运行您的rake 命令而不使用bundle exec。魔法!

    我不知道它是如何工作的,但我认为它与您的本地/全球宝石集有关;您的 rvm 全局 rake 应该是现在正在使用的。

    不,这可能不是一个好习惯,但就像我说的,它是为懒人准备的。

    【讨论】:

    • 这对我有用,我想知道它是否与安装旧版本的 Rails 有关。
    • ...只是补充一点,我在笔记本电脑上使用 Rails 3.1.1 时遇到了同样的问题,而我也有旧版本的 Rails。 @jonallard 提示解决了这个问题。
    • 重启终端后为我工作。 :)
    • 我想知道在此修复之前和之后会产生什么 'which rake'
    • 非常酷...我卸载时得到了这个信息输出:$ gem uninstall rake ERROR: While executing gem ... (Gem::InstallError) rake is not installed in GEM_HOME, try: gem uninstall -i /Users/jon/.rvm/gems/ruby-2.1.5@global rake 按照建议,我卸载了全局 rake,然后本地 rake 正常工作。
    【解决方案3】:

    我找到了另一种不必每次都运行bundle exec 的方法。 对我自己来说,使用 Sinatra(不是 Rails)工作,将gem 'rake' 添加到我的 Gemfile 就像一种魅力。 :)

    【讨论】:

      【解决方案4】:

      命令 gem uninstall rake 显示我安装了多个 rake gem,删除 3 个中的 2 个后,我不再需要使用 bundle exec

      【讨论】:

        猜你喜欢
        • 2023-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-22
        • 1970-01-01
        • 2012-03-04
        • 2013-10-05
        • 2011-11-17
        相关资源
        最近更新 更多