2010-06-08 101 views
10

我喜欢Rails 3的安装非常简单:gem install rails --pre,并且所有依赖项都会自动为您安装。但是,卸载它呢?如果我只是做gem uninstall rails,我仍然有卸载与依赖关系的Rails 3?

actionmailer (3.0.0.beta3) 
actionpack (3.0.0.beta3) 
activemodel (3.0.0.beta3) 
activerecord (3.0.0.beta3) 
activeresource (3.0.0.beta3) 
activesupport (3.0.0.beta3) 

,我想摆脱的。最简单的方法是什么?

+0

相关:http://stackoverflow.com/questions/952836/do-i-have-to-manually-uninstall-all-dependent-gems – ma11hew28 2011-07-18 00:56:21

回答

14

如果你打算升级到轨道的新版本,你可以这样做:

sudo gem clean 

或更新版本

sudo gem cleanup 

已经安装了新版本之后,这个卸载全部旧版本的全部您的宝石只留下系统中的最新版本。

注意:现在我使用RVM gemset和/或bundler来管理我的宝石,如果您使用的是RVM,我发现这样做更简单。例如,您可以为每个项目创建一个新的宝石:

rvm gemset create project_name 
rvm gemset use project_name 
bundle install 

任何错误,你可以删除的宝石,并再次启动

rvm gemset delete project_name 
+0

谢谢,这样做会很好,如果'gem clean'可以将版本号作为参数,那就好了,所以我可以一次删除所有'3.0.0.beta3'内容,但是删除所有旧版本对我来说已经足够了 – 2010-07-28 20:50:11

+5

这不是完全的答案,''gem clean',现在'gem cleanup',例如,假设您正在从Rails X升级到Rails Y,而Rails X依赖于Foo,但Rails Y没有。第一次执行'gem install rails'时, ,Rails X与gem Foo一起安装,下一次你做'gem install Rails Y被安装。然后,你做'宝石清理'。尽管Rails Y不使用它,但Foo gem仍留在系统中。具有依赖关系的真正的'gem uninstall rails'也会删除Foo宝石。 – ma11hew28 2011-07-11 13:05:24

1

检查当前安装的版本(S):

gem list -d rails 

然后卸载版本()你不想:

sudo gem uninstall rails -v 3.0.0.beta3 
sudo gem uninstall actionmailer -v 3.0.0.beta3 

我仍然试图找出如何彻底删除轨道3.0.0.beta3及其所有代表。

+0

好吧,我知道我可以做到这一点;我真正想知道的是,是不是有一种需要单一命令的方式?就像一个'gem'命令一样,意味着“卸载版本号恰好为3的所有东西。0.0.beta3“? – 2010-06-14 14:14:00

+0

@MarkRichman @TrevorBurnham,这也不是递归的,也就是说,当你安装Rails的时候,它会安装ActiveResource,它会安装ActiveModel等等,所以这只会深入一层(ActiveModel不会被卸载)。 。真正的卸载会卸载Rails,它的依赖关系,依赖关系的依赖关系,等等。 – ma11hew28 2011-07-11 13:17:21

3

看DEPS(可选):

gem dependency rails -v=3.0.9 

然后卸载指定版本的所有组件:

gem uninstall actionmailer actionpack activerecord activesupport acriveresource rails -v=3.0.9 
2

我发现这个极好的职位上由Ken Nordquist删除所有红宝石宝石:http://geekystuff.net/2009/01/14/remove-all-ruby-gems/

该命令使用管道反复推宝石列表的卸载工具。下面是一个命令:

'gem list | cut -d" " -f1 | xargs gem uninstall -aIx' 

它成功地删除这似乎是在我的Mac灯具永久性除了以下所有宝石:

MINITEST(1.6.0) 耙(0.8.7) 的RDoc( 2.5.8)

+0

多年后,这在OS X优胜美地仍然有用。现在有更多的默认值。试试:'gem list | cut -d“”-f1 | egrep -v“rdoc | psych | io-console | rake | bigdecimal | json”| xargs gem uninstall -aIx' – Quint 2015-03-22 02:42:37