Rails 3.0和Ruby 1.9.2rc:Rake命令返回’已初始化的常量’和堆栈级别太深的错误。 有任何想法吗

我正在尝试在Ubuntu 10.04上运行Rails 3 beta 4和Ruby 1.9.2rc。 它最初工作,但在完成我的第一个bundle install / package之后,我现在在所有rails项目中都遇到以下错误。 即使是基本的“rails new testproject”,然后是rake,也会显示错误消息。

简而言之,我很难过。 关于可能导致这种情况的任何帮助都将非常感激。

我注意到的唯一 – 可能相关或不相关 – 是〜/ .bundle文件中的目录是ruby / 1.9.1。 我的机器上没有安装1.9.1 – 只有1.9.2rc。 ruby -v带回1.9.2

(in /home/john/Websites/sandbox/testerino) /home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:32: warning: already initialized constant RAKEVERSION /home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake/alt_system.rb:32: warning: already initialized constant WINDOWS WARNING: Possible conflict with Rake extension: String#ext already exists WARNING: Possible conflict with Rake extension: String#pathmap already exists /home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:404: warning: already initialized constant EMPTY_TASK_ARGS /home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:452: warning: already initialized constant EMPTY /home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:960: warning: already initialized constant RUBY_EXT /home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:964: warning: already initialized constant RUBY /home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1033: warning: already initialized constant LN_SUPPORTED /home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1242: warning: already initialized constant ARRAY_METHODS /home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1245: warning: already initialized constant MUST_DEFINE /home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1249: warning: already initialized constant MUST_NOT_DEFINE /home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1253: warning: already initialized constant SPECIAL_RETURN /home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1259: warning: already initialized constant DELEGATING_METHODS /home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1569: warning: already initialized constant DEFAULT_IGNORE_PATTERNS /home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1575: warning: already initialized constant DEFAULT_IGNORE_PROCS /home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1612: warning: already initialized constant FileList /home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1638: warning: already initialized constant EARLY /home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1968: warning: already initialized constant DEFAULT_RAKEFILES rake aborted! stack level too deep 

我担心更简单的解决方案是运行此命令而不是rake db:migrate

 bundle exec rake db:migrate 

我也遇到过这个问题。 它似乎与您提到的rails或ruby的特定版本无关,它们与我正在使用的版本不同(Rails 2.3.8,Rake 0.8.7,Ruby 1.9.1p378)。 它似乎与捆绑器和rake不能很好地协同工作。

在这张灯塔票的底部提到了一个对我有用的决议。 这是简短的版本:

  • 运行“bundle exec bash”; 看看耙子现在是否有效 – 如果有,
  • 通过查阅env命令并相应地修改〜/ .bashrc或〜/ .bash_profile,确保之前和之后的bash环境相同。

一旦你这样做,你就会陷入困境。 此时,您必须清除RUBYOPT才能运行bundle命令:

 RUBYOPT= bundle install --relock 

编辑:

再考虑一下,我不确定这是解决这一特定问题的最佳方法。 在采用这种方法之前,您可能会尝试使用Hiral Desai的提示和其他一些答案,因为这会改变环境。

根据Eric W.之前的消息,设置了RUBYOPT环境变量。 如果你想退出由“bundle exec bash”打开的新bash shell,那么只需复制RUBYOPT环境行,退出shell然后输入“export RUBYOPT =’你从以前的环境中复制的ARGS’

注意:这适用于ruby 1.9.2p180(2011-02-18修订版30909)[x86_64-darwin10.7.0],Rails 3.0.7,gem 1.8.0和Rake 0.8.7

bundle exec bash对我bundle exec bash

我能够通过将我的rubygem安装从1.8.10降级到1.7.2来解决这个问题。

 gem update --system 1.7.2 

看起来像一个奇怪的递归require

您是否尝试卸载所有版本的rake并重新安装? 1.9.2rc中有一个影响gem加载的错误,可能就是这样吗? 我没有密切关注它,因为很多人已经密切关注它了……

注意 :1.9.1是API版本,因此它是正确的。

我的根目录下有一个.bundler文件夹,它有冲突。 删除它为我做了。

 rm -rf ~/.bundler 

更新rubygem(1.8.10)和bundler(1.0.18)之后我也遇到过这个问题

我解决了将rake更新为0.9.2的问题

因为删除了.rvmrc而得到了这样的错误

所以请确保你在正确的环境中运行rake;)

如果安装了RVM,则一旦将rubygems更新为1.8.15,就会出现此问题。 问题是我在全局gemset和我的项目的gemset中安装了rake。 解决方案是只安装一个耙子。 要从项目gemset中删除它:1。cd到项目2. gem uninstall rake

另一种可能的解决方案是在http://rubyist-journal.com/2011/07/29/howto-fix-rake-0-9-2-to-work-with-ruby-1-9-2-下 – RVM /

似乎可以归结为在用户gem目录和系统范围内都安装了相同的rake gem。 删除任何一个都可以解决问题。

当你在repo的rvm gemset和全局的gem中安装了rake gem时,就会发生这种情况。

更新到最新的Rails次要版本。 所以如果你是4.2,update => 4.2.latest。