必须将bundle exec添加到rake db:migrate

时间:2016-03-10 08:18:10

标签: ruby-on-rails ruby rake

我不知道发生了什么,但是当我创建一个新模型并希望运行rake db:migrate但是它给了我这个错误:

  耙子流产了! Gem :: LoadError:你已经激活了rake 11.0.1,   但你的Gemfile需要rake 10.5.0。预先bundle exec   你的命令可以解决这个问题。

我相信我没有对gem进行任何更新。我告诉我在执行rake之前先添加bundle exec,但我只想像以前一样运行rake db:migrate

如何使我的本地系统rake gem版本适合我的rails rake gem版本?

4 个答案:

答案 0 :(得分:3)

您可以按照以下步骤修复此rake版本冲突。

  1. 使用命令gem uninstall rake

  2. 卸载rake
  3. 使用命令gem install rake --version 10.5.0

  4. 安装特定的rake版本

    您还可以将Gemfile中的佣金版本更新为11.0.1

    此外,如果您使用rvm,请确保在使用不同的ruby版本时切换gemset时rake版本不会更改。

答案 1 :(得分:2)

这是因为Rake 11.0.1在您的系统中可用,但您的Rails应用程序正在使用Rake 10.5.0。

您的应用使用Gemfile.lock文件中指定的宝石,该文件是您在第一次运行bundle install时由Bundler创建的。

更新你的宝石可以解决这个问题。根据{{​​3}}:

  

运行命令bundle update以更新您的宝石。
Bundler将为您更新Gemfile.lock文件。

答案 2 :(得分:0)

尝试在rake db:migrate命令之前为bundle exec添加前缀。

bundle exec rake db:migrate

答案 3 :(得分:0)

您的系统宝石与宝石文件中的宝石之间存在冲突。看起来您的本地系统正在使用rake 11.0.1,但您的rails版本使用的是10.5.0。

有两种方法可以解决这个问题:

1)使用bundle exec rake db:migrate。这将在gem文件中指定的gem中执行rake任务。 (见http://bundler.io/man/bundle-exec.1.html

2)更新系统宝石,使它们与宝石文件中指定的宝石相匹配。

在这两者中,1)是更简单的选择。