我正在尝试运行迁移,但我不断收到错误消息:
rake aborted! Undefined method prerequisite for nil:NilClass.
似乎我以某种方式激活了名为rake 0.9.3.beta.1
的宝石 - 但是我已经更改了宝石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
My 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
答案 0 :(得分:18)
尝试删除Gemfile.lock文件并再次运行bundle install
。
答案 1 :(得分:5)
另一种对我有用的方法是,转到Gemfile.lock并将Rake版本从0.9.2.2更改为0.9.3.beta.1。
答案 2 :(得分:4)
我遇到了同样的问题,并在以下链接的帮助下解决了。
他们可以帮助理解有关此特定问题的一些概念,以及如何以及为何使用bundle exec rake db:migrate
。
您还可以选择使用gem uninstall rake
,然后选择要删除的版本。