如何在使用rbenv +不同的ruby版本时从OSX的系统ruby 1.8.x正确卸载gem?

St.*_*St. 3 ruby gem rubygems uninstall rbenv

我有rbenvruby 2.1.0当前安装的,我想用我安装了这个版本的红宝石任何宝石向前移动.

但是我也有系统(OSX 10.9)默认ruby(1.8.x),我以前为该版本安装了一些宝石.我在这里可以看到它们:

/Library/Ruby/Gems/1.8/gems

我不知道如何gem从上面的目录中正确卸载所以我可以清理我的机器并为我rbenv托管的新版本的ruby 重新安装一些这些宝石的更新版本.

例如,我已经为1.8.x安装了Compass和Sass,我不再需要Compass,并且希望将它从我的机器中删除,并希望将Sass从3.2升级到3.3但是让它运行ruby 2.1.0.

目前,gem list只给我当前安装的ruby设置的活动版本的宝石rbenv,这是完全合理的.

那么我怎样才能gem uninstall <old ruby 1.8.x gem>找到/Library/Ruby/Gems/1.8/gems

Tra*_*vis 7

rbenv允许您通过运行以下命令切换到系统版本的Ruby:

rbenv global system
Run Code Online (Sandbox Code Playgroud)

然后使用以下方法卸载gem:

sudo gem uninstall -aIx
Run Code Online (Sandbox Code Playgroud)

如果'sudo gem uninstall -aIx'失败,可能是因为你的宝石版本太旧了.然后,您可以运行gem list以打印出安装到系统Ruby的所有gem.

sudo gem uninstall [gem name]
Run Code Online (Sandbox Code Playgroud)

在你想要删除的那些.你永远不必在gem安装/卸载上运行sudo,但由于你必须使用它来为系统版本的Ruby安装gems,这是你将它们带出那里的唯一方法.

我的系统Ruby是2.0,因此您的默认gem可能不同,但默认情况下我预安装了以下内容.如果你不小心试图删除错误的那个,这不是什么大问题,因为它只会警告你它无法卸载默认的宝石.

bigdecimal (1.2.0)
io-console (0.4.2)
json (1.7.7)
minitest (4.3.2)
psych (2.0.0)
rake (0.9.6)
rdoc (4.0.0)
rubygems-update (2.5.1)
test-unit (2.0.0.0)
Run Code Online (Sandbox Code Playgroud)

在那之后,记得切换回你的rbenv版本的Ruby.

rbenv list
rbenv global 2.1.0 # or whichever version you have installed
Run Code Online (Sandbox Code Playgroud)

从那里你可以检查你的Ruby版本并安装如下所示的宝石:

ruby -v
#=> ruby 2.1.0-p648 (2015-12-16 revision 920553) [x86_64-darwin15]
gem install [gem name] # installs to currently set version of Ruby from running ruby -v
Run Code Online (Sandbox Code Playgroud)