您已经激活了rake 0.9.0,但是您的Gemfile需要rake 0.8.7


124

我正在尝试运行Rails项目,我明白了

Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

如果我这样做:“捆绑安装”

但我越来越

You have already activated rake 0.9.0, but your Gemfile requires rake 0.8.7

在做的时候

rake db:migrate

Answers:


245

首先,请检查以确保Gemfile中提到了rake。如果不是,请添加它,然后指定版本“您已激活”。

然后,您需要告诉bundle更新其用于您的应用程序的rake版本:

bundle update rake

它将Gemfile.lock为您更新。


2
这对我不起作用。当我运行此命令时,它执行与“捆绑安装”完全相同的操作,并且表明它使用的是相同的rake版本。它不会更新它。
EE33

5
我必须将gem'rake','version#'添加到我的gemfile中,并为我的gemfile.lock运行'bundle update rake'以正确更新。仅供参考,以供无法使用此解决方案的任何人使用。
EE33

44

您目前在哪里使用rake命令,例如

rake db:migrate

使用此代替:

bundle exec rake db:migrate

直到最新版本的导轨和/或耙子一起正常工作,情况才会如此。


3
关于“最新版本的护栏和/或耙子”能否很好地协同工作的说法仅在特定的,未命名的时间点以及在有关使用的工作流程的某些特定假设下才有意义。我认为这暗示着“您正在使用令人讨厌的边缘轨道,而耙还没有赶上。” 但是,这种情况也可以通过“ bundle exec”或“ edit Gemfile”方法来解决,并且当没有内在的兼容性问题,而只有混乱的工作流历史记录时,这些方法也可以解决该问题。
jackr 2012年

24

我要感谢Dobry Den,干杯们。但是我要做的只是一点点。这是解决方案(对我有用)。我添加了

gem 'rake','0.8.7'

在不存在的Gemfile上,但是我的新版本的rails自动安装了rake(0.9.0)。

在删除完rake0.9.0 gem uninstall rake 之后bundle update rake,我可以创建和迁移数据库。



7

在Gemfile中指定所需的版本。

gem 'rake', '0.9.0' 

然后

bundle update rake

您需要使用bundle exec运行rake任务

bundle exec rake db:migrate

似乎不要“取消激活”更高版本。不过,完全删除Rake并重新安装即可。
JosephK

6

哦,这是未来。对我来说,它抱怨我在要0.9.5时安装了rake10.x。不太确定,对Ruby不够熟悉,无法真正了解最近的版本号发生了什么,但是我所做的是:

gem uninstall rake
gem install rake -v 0.9.5

强制系统安装应用程序想要的rake版本(对我来说是Octopress)。


2
未来来了,它想借用您的Hammer裤子。
Keith Layne

嗨,又是未来。我听说锤子裤子终于卷土重来了。
subdigit

5

我遇到了这个问题(另一个不是耙子的宝石),我能够通过以下方式解决它

gem uninstall <complaining gem>
gem install <complaining gem>

bundle install
bundle update

请注意,未使用关键字“ sudo”(即sudo bundle install),因为这可能会将您的gem放置在您的rails应用程序可能不在其中搜索的目录中。


3

如果我了解您的要求,则需要打开Gemfile文件并更改行...

gem 'rake', '0.8.7'

...至...

gem 'rake', '0.9.0'

如果我想使用0.8.7而不是0.9怎么办?
Kir

6
默认情况下,rake gem没有在您的Gemfile中指定,因为它是Rails依赖项。如果将rake gem更新为0.9.0,则系统上仍然有0.8.7 gem(选中gem list)。我很确定,如果gem 'rake', '0.8.7'您仍然指定Gemfile.lock,它仍然会使用0.8.7 gem,不会出现问题。如果不是,请bundle在添加gem 'rake', '~> 0.8.7'到Gemfile(不是.lock)后尝试运行,看看它是否显示任何内容。
danneu 2011年

我同意@Dobry Den。
Olivier L.

gem'rake'未定义。如果我有多个Gem Rake(0.8.7和0.9.0),它将默认使用一个。我们可以默认为旧版本吗?
Mujah Maskey 2011年

3

将此添加到您的Gemfile

# Rake 0.9.0 break Rails.
gem "rake", "!= 0.9.0"

然后卸载rake-0.9.0

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.