2011-10-03 43 views
1

我知道这是一个常见的问题,但我刚开始一个项目与新的Rails 3.1.0和Ruby 1.9.2 P290耙错误:堆栈层次过深

我第一次迁徙我已经有这个错误我不知道为什么。

Aurelien$ rake db:migrate --trace 
/Users/Aurelien/.rvm/gems/[email protected]/gems/rake-0.9.2/lib/rake/version.rb:4: warning: already initialized constant MAJOR 
/Users/Aurelien/.rvm/gems/[email protected]/gems/rake-0.9.2/lib/rake/version.rb:5: warning: already initialized constant MINOR 
/Users/Aurelien/.rvm/gems/[email protected]/gems/rake-0.9.2/lib/rake/version.rb:6: warning: already initialized constant BUILD 
/Users/Aurelien/.rvm/gems/[email protected]/gems/rake-0.9.2/lib/rake/version.rb:3: warning: already initialized constant NUMBERS 
/Users/Aurelien/.rvm/gems/[email protected]/gems/rake-0.9.2/lib/rake/version.rb:9: warning: already initialized constant VERSION 
/Users/Aurelien/.rvm/gems/[email protected]/gems/rake-0.9.2/lib/rake.rb:26: warning: already initialized constant RAKEVERSION 
/Users/Aurelien/.rvm/gems/[email protected]/gems/rake-0.9.2/lib/rake/early_time.rb:17: warning: already initialized constant EARLY 
/Users/Aurelien/.rvm/gems/[email protected]/gems/rake-0.9.2/lib/rake/alt_system.rb:32: warning: already initialized constant WINDOWS 
/Users/Aurelien/.rvm/gems/[email protected]/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/Aurelien/.rvm/gems/[email protected]/gems/rake-0.9.2/lib/rake/task_arguments.rb:73: warning: already initialized constant EMPTY_TASK_ARGS 
/Users/Aurelien/.rvm/gems/[email protected]/gems/rake-0.9.2/lib/rake/invocation_chain.rb:49: warning: already initialized constant EMPTY 
/Users/Aurelien/.rvm/gems/[email protected]/gems/rake-0.9.2/lib/rake/file_utils.rb:10: warning: already initialized constant RUBY 
/Users/Aurelien/.rvm/gems/[email protected]/gems/rake-0.9.2/lib/rake/file_utils.rb:84: warning: already initialized constant LN_SUPPORTED 
/Users/Aurelien/.rvm/gems/[email protected]/gems/rake-0.9.2/lib/rake/dsl_definition.rb:143: warning: already initialized constant Commands 
/Users/Aurelien/.rvm/gems/[email protected]/gems/rake-0.9.2/lib/rake/file_list.rb:44: warning: already initialized constant ARRAY_METHODS 
/Users/Aurelien/.rvm/gems/[email protected]/gems/rake-0.9.2/lib/rake/file_list.rb:47: warning: already initialized constant MUST_DEFINE 
/Users/Aurelien/.rvm/gems/[email protected]/gems/rake-0.9.2/lib/rake/file_list.rb:51: warning: already initialized constant MUST_NOT_DEFINE 
/Users/Aurelien/.rvm/gems/[email protected]/gems/rake-0.9.2/lib/rake/file_list.rb:55: warning: already initialized constant SPECIAL_RETURN 
/Users/Aurelien/.rvm/gems/[email protected]s3/gems/rake-0.9.2/lib/rake/file_list.rb:61: warning: already initialized constant DELEGATING_METHODS 
/Users/Aurelien/.rvm/gems/[email protected]/gems/rake-0.9.2/lib/rake/file_list.rb:364: warning: already initialized constant DEFAULT_IGNORE_PATTERNS 
/Users/Aurelien/.rvm/gems/[email protected]/gems/rake-0.9.2/lib/rake/file_list.rb:370: warning: already initialized constant DEFAULT_IGNORE_PROCS 
/Users/Aurelien/.rvm/gems/[email protected]/gems/rake-0.9.2/lib/rake.rb:64: warning: already initialized constant FileList 
/Users/Aurelien/.rvm/gems/[email protected]/gems/rake-0.9.2/lib/rake.rb:65: warning: already initialized constant RakeFileUtils 
** Invoke db:migrate (first_time) 
** Invoke environment (first_time) 
** Execute environment 
rake aborted! 
stack level too deep 
/Users/Aurelien/.rvm/gems/[email protected]/gems/rake-0.9.2/lib/rake/task.rb:162 

我也去掉了宝石和重新tyring与DB:重置 源“http://rubygems.org”

gem 'rails', '3.1.0' 

# Bundle edge Rails instead: 
# gem 'rails',  :git => 'git://github.com/rails/rails.git' 

gem 'sqlite3' 

#gem "rspec-rails", :group => [:test, :development] 

group :test do 
    #gem "factory_girl_rails" 
    #gem "capybara" 
    #gem "guard-rspec" 
    #gem "spork", "> 0.9.0.rc" 
    #gem "guard-spork" 
end 

耙命令与bundle exec工作,但它会很高兴避免使用它。

非常感谢您提供提示和答案。

Aurelien

+0

你捆绑的耙和你的系统耙有区别吗?我建议这就是问题所在。 'rake --version'和'bundle exec rake --version'。它看起来像试图再次需要rake库,并导致某种循环。 –

+0

感谢马修,但我得到了相同的版本: 'Aurelien-Schlumbergers-MacBook-Pro:tchinchine Aurelien $ rake --version rake,0.9.2版本 Aurelien-Schlumbergers-MacBook-Pro:tchinchine Aurelien $ bundle exec rake --version rake,0.9.2版本 ' –

+0

嗯......如果你尝试创建一个新的gemset,然后捆绑安装,并尝试再次耙取?是否有一些疯狂的宝石覆盖全球? 'rvm gemset create tchinchine && rvm gemset use tchinchine'否则,我想不出为什么'bundle exec rake'会与'rake'有所不同 –

回答

5

您应该在您的Gemfile中特别添加Rake版本> = 0.9.2! 某些Rails 3版本存在一个错误,当您使用较旧的Rake版本时,会看到类似这样的奇怪错误。

在你的Gemfile:

gem 'rake' , '>= 0.9.2' 

我会还建议你专门创建一个新的宝石为您的应用程序,例如

rvm gemset create yourproject 
rvm gemset use yourproject 

或:

rvm gemset use yourproject --default 

新宝石,你可能要加上“创业板安装耙”手动,然后运行“包安装”

除了使用单独的宝石使用你的Gemfile是让你的项目中的宝石版本保持稳定并与其他项目分离的最佳方式。