由于rake版本不同,rake db:migrate被中止。

8
我遇到了错误。
rake db:migrate --trace
rake aborted!
You have already activated rake 10.1.1, but your Gemfile requires rake 10.1.0. Using bundle exec may solve this.
/Users/iang/.rvm/gems/ruby-2.0.0-p247@global/gems/bundler-1.3.5/lib/bundler/runtime.rb:33:in `block in setup'
/Users/iang/.rvm/gems/ruby-2.0.0-p247@global/gems/bundler-1.3.5/lib/bundler/runtime.rb:19:in `setup'
/Users/iang/.rvm/gems/ruby-2.0.0-p247@global/gems/bundler-1.3.5/lib/bundler.rb:120:in `setup'
/Users/iang/.rvm/gems/ruby-2.0.0-p247@global/gems/bundler-1.3.5/lib/bundler/setup.rb:7:in `<top (required)>'
/Users/iang/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:116:in `require'
/Users/iang/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:116:in `rescue in require'
/Users/iang/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:122:in `require'
/Users/iang/code/Projects/work/startco/config/boot.rb:4:in `<top (required)>'
/Users/iang/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:51:in `require'
/Users/iang/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:51:in `require'
/Users/iang/code/Projects/work/startco/config/application.rb:1:in `<top (required)>'
/Users/iang/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:51:in `require'
/Users/iang/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:51:in `require'
/Users/iang/code/Projects/work/startco/Rakefile:4:in `<top (required)>'
/Users/iang/.rvm/gems/ruby-2.0.0-p247/gems/rake-10.1.1/lib/rake/rake_module.rb:25:in `load'
/Users/iang/.rvm/gems/ruby-2.0.0-p247/gems/rake-10.1.1/lib/rake/rake_module.rb:25:in `load_rakefile'
/Users/iang/.rvm/gems/ruby-2.0.0-p247/gems/rake-10.1.1/lib/rake/application.rb:637:in `raw_load_rakefile'
/Users/iang/.rvm/gems/ruby-2.0.0-p247/gems/rake-10.1.1/lib/rake/application.rb:94:in `block in load_rakefile'
/Users/iang/.rvm/gems/ruby-2.0.0-p247/gems/rake-10.1.1/lib/rake/application.rb:165:in `standard_exception_handling'
/Users/iang/.rvm/gems/ruby-2.0.0-p247/gems/rake-10.1.1/lib/rake/application.rb:93:in `load_rakefile'
/Users/iang/.rvm/gems/ruby-2.0.0-p247/gems/rake-10.1.1/lib/rake/application.rb:77:in `block in run'
/Users/iang/.rvm/gems/ruby-2.0.0-p247/gems/rake-10.1.1/lib/rake/application.rb:165:in `standard_exception_handling'
/Users/iang/.rvm/gems/ruby-2.0.0-p247/gems/rake-10.1.1/lib/rake/application.rb:75:in `run'
/Users/iang/.rvm/gems/ruby-2.0.0-p247/gems/rake-10.1.1/bin/rake:33:in `<top (required)>'
/Users/iang/.rvm/gems/ruby-2.0.0-p247/bin/rake:23:in `load'
/Users/iang/.rvm/gems/ruby-2.0.0-p247/bin/rake:23:in `<main>'

我使用了bundle,但它并没有解决问题...有什么想法可以帮助解决这个问题吗?


1
跳过了“exec”部分,运行“bundle exec rake db:migrate”起作用了。 - iang
8个回答

30

我遇到了同样的错误。运行bundle update解决了它。

更新:如TuK所建议,bundle update rake是正确的方法。


2
是的 - 这解决了版本不匹配的错误信息。这就是正确答案! - David Kim
3
运行 bundle update 可能会更新更多内容。运行 bundle update rake 仅会更新 rake。 - TuK
谢谢TuK,听起来很合理。 - Andreas Baumgart

14

你想使用bundle exec:

bundle exec rake db:migrate

或者,如果您正在使用 Rails 4 binstubs:

./bin/rake db:migrate

1
你能帮我理解错误信息的本质吗?在我的Rails应用程序中,通常运行“rake”命令都很好 - 但在最近的教程项目中,我遇到了这个问题,不明白为什么(Rails 4.0.1,Ruby 2.0.0,Gem 2.0.3在Ubuntu 12.04上运行)。我无意中激活了更新的rake吗?(我该如何做?)它为什么会混淆解释器/Gemfile? - David Kim
当然。宝石有不同的版本(如您所知)。Rails应用程序正在请求Rake版本x,但是在加载路径中首先出现的是Rake版本y。因此,Ruby无法激活正确的版本。Bundler可以解决这个问题。 - sethvargo

4

在使用 Capistrano 部署到生产环境时,我遇到了这个错误提示。为解决此问题,我在生产服务器上执行了以下操作:

gem update rake

我使用了 gem uninstall rake。你将被提示选择要卸载的版本。这帮助我回退到了10.1.0版本。不管怎样,@Goodfellow的想法帮助我找到了解决方法,所以点个赞。 - semiomant

0

我找到了答案。 为什么会出现这个错误? 因为我们操作系统上的rake版本与我们项目中的版本不同。当我们设置相同版本时,一切都正常了!

简单的方法是在我们的Gemfile中设置相同的版本。并确保所有项目使用相同的rake版本!

gem 'rake', '10.2.2' #forking error! force the version the same with our OS and all projects!!!

我希望您能理解我所说的和这个错误的真正原因。那么我们将有更多的解决方案,比如“bundle update rake”。谢谢!


0

您可以运行此命令

bundle exec rake db:migrate

0

bundle update rake 对我解决了这个问题。


0

我遇到了同样的错误,但运行bundle update rake对我没有用。这个答案对我有用。你必须删除你的Gemfile.lock文件:

rm Gemfile.lock

然后重新打包:

bundle install

-1

只需通过命令安装旧版本:gem install rake -v '10.1.0'


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接