Ruby “;堆栈级别太深”;运行rakedb:create:all

Ruby “;堆栈级别太深”;运行rakedb:create:all,ruby,rake,Ruby,Rake,当我运行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: w

当我运行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

并且数据库没有被创建。有人能帮我吗?

我在网上找到了一个如何避免错误的提示。请参阅指向的链接。没有给出任何理由,但是使用
bundle exec-rake
而不是纯rake调用已经做到了这一点。似乎对rake的调用是递归地调用自己,而没有注意到文件已经加载


所以请尝试一下,告诉我们这是否对您有效。

如果您像我一样懒得每次都使用
bundle

想看魔术吗?尝试运行
gem卸载rake
。当被问及断开的依赖项时,请确认。我知道这是违反直觉的

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

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


不,这可能不是一个好的做法,但正如我所说,这是为懒惰的人准备的。

我找到了另一种方法,不必每次都运行
bundle exec

对于我自己来说,与Sinatra(而不是Rails)一起工作,将
gem'rake'
添加到我的gem文件中,效果非常好

命令
gem uninstall rake
告诉我,我已经安装了多个rake gem,在删除3个中的2个后,我不再需要使用
bundle exec

是的,rake问题的常见根源是忘记通过
bundle exec
调用它。对于那些经常忘记事情的人,调用
bundle exec bash
会有所帮助。这很有帮助。在从10.4.2升级到rake 12.3.0之后,才在rake 12.3.0中得到了这一点,但是使用bundle exec rake进行预结束时,与我使用的rake相比,不再抛出警告,我想知道这是否与安装了旧版本的Rails有关……只是补充一点,我在笔记本电脑上使用Rails 3.1.1时也遇到了同样的问题,因为我的笔记本电脑上也安装了旧版本的Rails@Jonalard tip解决了问题。在重新启动终端后为我工作。:)我想知道在这之前和之后“哪种耙子”会产生什么非常酷。。。卸载时,我得到了这个信息性输出:
$gem uninstall rake ERROR:执行gem时。。。(Gem::InstallError)没有在Gem_HOME中安装rake,请尝试:Gem uninstall-i/Users/jon/.rvm/gems/ruby-2.1。5@globalrake
按照建议,我卸载了全局rake,然后本地rake就可以正常工作了。