Ruby on rails 必须将bundle exec前置到rake db:migrate

Ruby on rails 必须将bundle exec前置到rake db:migrate,ruby-on-rails,ruby,rake,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版本

我不知道发生了什么,但当我创建了一个新模型并希望运行
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版本相适应?

在rake db:migrate命令之前尝试在bundle exec前面加前缀

bundle exec rake db:migrate

系统gem与gem文件中的gem之间存在冲突。看起来您的本地系统使用的是Rake11.0.1,但您的rails版本使用的是10.5.0

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

1) 使用
bundle exec rake db:migrate
。这将在gem文件中指定的gem上下文中执行rake任务。(见附件)

2) 更新系统gem,使其与gem文件中指定的匹配


在这两个选项中,1)是更简单的选项。

您可以通过以下步骤修复此rake版本冲突

  • 使用命令
    gem Uninstall rake卸载rake

  • 使用命令
    gem Install rake--version 10.5.0

  • 您还可以将
    gem文件中的rake版本更新为
    11.0.1


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

    发生这种情况是因为Rake 11.0.1在您的系统中可用,但您的Rails应用程序使用的是Rake 10.5.0

    您的应用程序使用Gemfile.lock文件中指定的gems,该文件是在您第一次运行
    bundle安装时由Bundler创建的

    更新你的gems修复了这个问题。根据:

    运行命令
    bundle update
    更新您的gems
    Bundler将为您更新Gemfile.lock文件


    当系统中存在两个不同的
    rake
    版本时,通常会发生这种情况。找到了一个很好的解释,但我只想运行rake db:migrate而不使用bundle exec。