rake db:migrate aborted

我正在阅读rails教程书,在第6章第199页我必须做一个rake db:migrate,但是我收到此错误:

耙子流产了! nil的未定义方法“先决条件”:NilClass

(通过使用–trace运行任务来查看完整跟踪)

当我尝试使用rake db:migrate –trace时,我收到以下错误:

rake aborted! undefined method `prerequisites' for nil:NilClass /Users/jeanosorio/.rvm/gems/ruby-1.9.2-p290/gems/rspec-rails-2.0.1/lib/rspec/rails/tasks/rspec.rake:3:in `' /Users/jeanosorio/.rvm/gems/ruby-1.9.2-p290/gems/rspec-rails-2.0.1/lib/rspec-rails.rb:10:in `load' /Users/jeanosorio/.rvm/gems/ruby-1.9.2-p290/gems/rspec-rails-2.0.1/lib/rspec-rails.rb:10:in `block in ' /Users/jeanosorio/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/railtie.rb:183:in `call' /Users/jeanosorio/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/railtie.rb:183:in `block in load_tasks' /Users/jeanosorio/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/railtie.rb:183:in `each' /Users/jeanosorio/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/railtie.rb:183:in `load_tasks' /Users/jeanosorio/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/engine.rb:396:in `block in load_tasks' /Users/jeanosorio/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/application/railties.rb:8:in `each' /Users/jeanosorio/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/application/railties.rb:8:in `all' /Users/jeanosorio/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/engine.rb:396:in `load_tasks' /Users/jeanosorio/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/application.rb:103:in `load_tasks' /Users/jeanosorio/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.1.1/lib/rails/railtie/configurable.rb:30:in `method_missing' /Users/jeanosorio/ror/sample_app/Rakefile:7:in `' /Users/jeanosorio/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/rake_module.rb:25:in `load' /Users/jeanosorio/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/rake_module.rb:25:in `load_rakefile' /Users/jeanosorio/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/application.rb:495:in `raw_load_rakefile' /Users/jeanosorio/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/application.rb:78:in `block in load_rakefile' /Users/jeanosorio/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/application.rb:129:in `standard_exception_handling' /Users/jeanosorio/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/application.rb:77:in `load_rakefile' /Users/jeanosorio/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/application.rb:61:in `block in run' /Users/jeanosorio/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/application.rb:129:in `standard_exception_handling' /Users/jeanosorio/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/application.rb:59:in `run' /Users/jeanosorio/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/bin/rake:32:in `' /Users/jeanosorio/.rvm/gems/ruby-1.9.2-p290/bin/rake:19:in `load' /Users/jeanosorio/.rvm/gems/ruby-1.9.2-p290/bin/rake:19:in `' 

我尝试更新我的gem,但我仍然得到最后一个错误。 有人可以帮我解决这个问题吗。

嘿,我有这个完全相同的问题,我相信这是由于本书未涵盖的Rails 3.1更改 。 我通过将我的GEMFILE改为此来实现它:

 source 'http://rubygems.org' gem 'rails', '3.1.0' gem 'gravatar_image_tag', '1.0.0.pre2' gem 'will_paginate', '3.0.pre2' gem 'sqlite3', '1.3.4' # Asset template engines gem 'sass-rails', "~> 3.1.0.rc" gem 'coffee-script' gem 'uglifier' gem 'jquery-rails' group :development do gem 'rspec-rails', '2.6.1' gem 'annotate', '2.4.0' gem 'faker', '0.3.1' end group :test do gem 'rspec-rails', '2.6.1' gem 'webrat', '0.7.1' gem 'spork', '0.9.0.rc5' gem 'factory_girl_rails', '1.0' end 

将其复制并粘贴到您当前的GEMFILE上。 接下来在终端中运行此命令

 bundle install 

现在你很高兴!