Gem::LoadError: Rake?

4
我正在尝试在本地运行rake db:migrate,但是出现了以下错误:
Gem::LoadError: You have already activated rake 10.2.2, but your Gemfile requires rake 10.1.1. Using bundle exec may solve this.

不确定为什么会发生这种情况?它突然出现了。

有什么解决办法吗?

谢谢!

6个回答

13
你可以删除Gemfile.lock。然后运行bundle install,bundler会重新创建包含正确rake版本的更新的Gemfile.lock文件。
我刚刚这样做了,对我有用。

4
使用此方法时需要小心,因为它可能会更改项目中其他依赖的版本。通常情况下这不是问题,但您应该知道它可能会带来不兼容性或回归问题。 - Renato Zannon
1
这就是写版本到Gemfile的原因。当在其他地方部署时,同样的问题也会发生。 - DonPaulie
当我删除它时,它会在不到一秒的时间内自动重新创建。 - Kunok

4
按照指示操作。调用rake时,请执行以下操作:
bundle exec rake

或者,另一种方法是这样运行bundler:
bundle install --binstubs

然后:

bin/rake

这是因为你的系统安装了不同版本的rake,而默认加载的却是错误的版本。


1
尝试运行bundle exec rake db:migrate,看看是否可行。
您似乎安装了多个版本的rake。请执行gem list以确定是否存在此情况。
根据情况,您可能需要使用gem uninstall rake卸载其中一个版本。

0

我认为更新所有Gemfile.lock是很危险的,特别是当你有许多没有指定版本的gems时。有时候当你更新一个gem时,会改变一些行为,这真的很烦人,需要花费很多时间去找出原因。

对于我自己来说,我也遇到了同样的问题,解决方案是修改Gemfile:

gem 'rake', "~> 10.2.2"

gem 'rake', "~> 11.1.2"

然后运行

bundle update rake

0

这些方法都对我无效,但我找到了解决方法。在你创建应用程序的文件夹中(其中包含 app bin 等),打开你的 "Gemfile.lock" 文件,找到 "rake 10.1.1"(使用查找功能),将其改为 10.2.2,保存并执行 rake 命令。祝好运!


0

我在我的Gemfile中没有指定gem 'rake',所以我只需运行bundle update rake即可正确更新Gemfile.lock。


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