【问题标题】:rake db:migrate abortedrake db:迁移中止
【发布时间】:2011-10-27 20:53:53
【问题描述】:

我正在阅读 rails 教程书,在第 6 章第 199 页中,我必须创建一个 rake db:migrate,但出现此错误:

rake 中止! 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 `<top (required)>'
/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 <class:Railtie>'
/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 `<top (required)>'
/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 `<top (required)>'
/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 `<main>'

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

【问题讨论】:

  • 第 7 行的 Rakefile 中有什么内容?
  • 这是我在第 7 行的 rakefileSampleApp::Application.load_tasks

标签: ruby-on-rails


【解决方案1】:

嘿,我遇到了同样的问题,我相信这是由于Rails 3.1 changes that the book does not cover。我通过将我的 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

现在你可以开始了!

【讨论】:

    猜你喜欢
    • 2011-04-21
    • 2012-09-08
    • 2016-05-14
    • 2023-03-04
    • 2013-02-01
    • 2012-11-17
    • 1970-01-01
    • 2013-01-10
    相关资源
    最近更新 更多