我已经使用Ruby 1.9.3运行Rails 3.2了一段时间了。最近我添加了Rails 5.1和Ruby 2.4。
我使用rvm安装Ruby2.4。
今天我有机会进入我的一个旧项目并运行rake db:migrate
,我收到以下消息:
Gem::LoadError: You have already activated rake 12.0.0, but your Gemfile requires rake 0.9.2.2. Prepending `bundle exec` to your command may solve this.
前置'捆绑执行'确实解决了问题,但据我所知,我想了解发生了什么。我认为项目中Gem文件的重点是锁定所需的宝石。
所以在我的机器上显然仍然有rake 0.9.2.2,但为什么我的命令&rake db:migrate'不自动使用它?
答案 0 :(得分:0)
原因:某些gem可能已经锁定了rake gem到该版本。你得到的是gemlock文件中的rake版本与你已经安装的版本不同。
<强>解决方法1:强>
bundle update
<强>溶液2:强>
编辑gemlock文件。打开Gemfile.lock并更改
rake (0.9.2.2) to rake (12.0.0)
<强> Solution3 强>:
删除Gemfile.lock并再次运行bundle install
。这将创建
再次使用Gemfile.lock。