停用Gem – “你已经激活了rake 0.9.3.beta.1,但我的Gemfile需要rake 0.9.2”

我正在尝试运行迁移,但我不断收到错误消息:

rake aborted! Undefined method prerequisite for nil:NilClass. 

似乎我以某种方式激活了一个名为rake 0.9.3.beta.1的gem – 但是我已经改变了gem bundle install并运行了bundle show rake,它显示安装了rake 0.9.2 。 我第一次使用Git所以我认为它可能与应用程序仍然使用rake的beta版本有关 – 但我已经完成了推送并且它显示了gemfile已经更新。

当我查看gem库时,我只能看到rake 0.9.2版本。 我应该在哪里看?

我也有一个Rails:Railtie弃用警告 – 但我认为这与我的迁移问题没有任何关系。 它告诉我在config / application.rb而不是Railtie中使用config.app_generators – 但我在文件中看不到。

这是Config / application.rb文件

 require File.expand_path('../boot', __FILE__) # Pick the frameworks you want: require "active_record/railtie" require "action_controller/railtie" require "action_mailer/railtie" require "active_resource/railtie" require "sprockets/railtie" Bundler.require *Rails.groups(:assets) if defined?(Bundler) module CrowdshareApp class Application < Rails::Application config.encoding = "utf-8" config.filter_parameters += [:password] config.assets.enabled = true end end 

我的Gemfile看起来像这样:

 source 'http://rubygems.org' gem 'rails', '3.1.0.rc5' gem 'sqlite3' group :assets do gem 'sass-rails', "~> 3.1.0.rc" gem 'coffee-rails', "~> 3.1.0.rc" gem 'uglifier' end gem 'jquery-rails' group :development do gem 'rspec-rails', '2.0.0.beta.18' end group :test do gem 'rspec', '2.0.0.beta.18' end 

和Gemfile.lock文件具有以下内容:

 GEM remote: http://rubygems.org/ specs: actionmailer (3.1.0.rc5) actionpack (= 3.1.0.rc5) mail (~> 2.3.0) actionpack (3.1.0.rc5) activemodel (= 3.1.0.rc5) activesupport (= 3.1.0.rc5) builder (~> 3.0.0) erubis (~> 2.7.0) i18n (~> 0.6) rack (~> 1.3.1) rack-cache (~> 1.0.2) rack-mount (~> 0.8.1) rack-test (~> 0.6.0) sprockets (~> 2.0.0.beta.12) activemodel (3.1.0.rc5) activesupport (= 3.1.0.rc5) bcrypt-ruby (~> 2.1.4) builder (~> 3.0.0) i18n (~> 0.6) activerecord (3.1.0.rc5) activemodel (= 3.1.0.rc5) activesupport (= 3.1.0.rc5) arel (~> 2.1.4) tzinfo (~> 0.3.29) activeresource (3.1.0.rc5) activemodel (= 3.1.0.rc5) activesupport (= 3.1.0.rc5) activesupport (3.1.0.rc5) multi_json (~> 1.0) arel (2.1.4) bcrypt-ruby (2.1.4-x86-mingw32) builder (3.0.0) coffee-rails (3.1.0.rc.5) actionpack (~> 3.1.0.rc1) coffee-script (>= 2.2.0) railties (~> 3.1.0.rc1) sprockets (>= 2.0.0.beta.9) coffee-script (2.2.0) coffee-script-source execjs coffee-script-source (1.1.2) diff-lcs (1.1.2) erubis (2.7.0) execjs (1.2.4) multi_json (~> 1.0) hike (1.2.0) i18n (0.6.0) jquery-rails (1.0.13) railties (~> 3.0) thor (~> 0.14) mail (2.3.0) i18n (>= 0.4.0) mime-types (~> 1.16) treetop (~> 1.4.8) mime-types (1.16) multi_json (1.0.3) nokogiri (1.5.0-x86-mingw32) polyglot (0.3.2) rack (1.3.2) rack-cache (1.0.2) rack (>= 0.4) rack-mount (0.8.2) rack (>= 1.0.0) rack-ssl (1.3.2) rack rack-test (0.6.1) rack (>= 1.0) rails (3.1.0.rc5) actionmailer (= 3.1.0.rc5) actionpack (= 3.1.0.rc5) activerecord (= 3.1.0.rc5) activeresource (= 3.1.0.rc5) activesupport (= 3.1.0.rc5) bundler (~> 1.0) railties (= 3.1.0.rc5) railties (3.1.0.rc5) actionpack (= 3.1.0.rc5) activesupport (= 3.1.0.rc5) rack-ssl (~> 1.3.2) rake (>= 0.8.7) rdoc (~> 3.4) thor (~> 0.14.6) rake (0.9.2) rdoc (3.9.2) rspec (2.0.0.beta.18) rspec-core (= 2.0.0.beta.18) rspec-expectations (= 2.0.0.beta.18) rspec-mocks (= 2.0.0.beta.18) rspec-core (2.0.0.beta.18) rspec-expectations (2.0.0.beta.18) diff-lcs (>= 1.1.2) rspec-mocks (2.0.0.beta.18) rspec-rails (2.0.0.beta.18) rspec (>= 2.0.0.beta.14) webrat (>= 0.7.0) sass (3.1.7) sass-rails (3.1.0.rc.5) actionpack (~> 3.1.0.rc1) railties (~> 3.1.0.rc1) sass (>= 3.1.4) sprockets (>= 2.0.0.beta.9) sprockets (2.0.0.beta.13) hike (~> 1.2) rack (~> 1.0) tilt (!= 1.3.0, ~> 1.1) sqlite3 (1.3.4-x86-mingw32) thor (0.14.6) tilt (1.3.2) treetop (1.4.10) polyglot polyglot (>= 0.3.1) tzinfo (0.3.29) uglifier (1.0.0) execjs (>= 0.3.0) multi_json (>= 1.0.2) webrat (0.7.3) nokogiri (>= 1.2.0) rack (>= 1.0) rack-test (>= 0.5.3) PLATFORMS x86-mingw32 DEPENDENCIES coffee-rails (~> 3.1.0.rc) jquery-rails rails (= 3.1.0.rc5) rspec (= 2.0.0.beta.18) rspec-rails (= 2.0.0.beta.18) sass-rails (~> 3.1.0.rc) sqlite3 uglifier 

尝试删除Gemfile.lock文件并再次运行bundle install

另一种对我有用的方法是,转到Gemfile.lock并将Rake版本从0.9.2.2更改为0.9.3.beta.1。

我有同样的问题,并在下面的链接的帮助下解决。 他们可以帮助理解有关此特定问题的一些概念,以及如何以及为何使用bundle exec rake db:migrate

您还可以选择使用gem uninstall rake ,然后选择要删除的版本。

阅读安装rails 3.1之前

Rake 0.9和David Chelimsky对gem版的限制