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

Pla*_*Ton 25 ruby rake ruby-on-rails

我正在尝试在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
Run Code Online (Sandbox Code Playgroud)

Eri*_*ker 31

我也遇到过这个问题.它似乎与您提到的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
Run Code Online (Sandbox Code Playgroud)

编辑:

再考虑一下,我不确定这是解决这一特定问题的最佳方法.您可能会给Hiral德赛的尖端和其他一些答案尝试采取这种方法之前,因为这一个改变了的环境.


Hir*_*sai 24

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

bundle exec rake db:migrate
Run Code Online (Sandbox Code Playgroud)