我正在开发一个Octopress博客,所以我设置了一个单独的gemset并做了rvm use gemset octopress
。一切都很好。但是,我打开了一个新的ZSH选项卡(我在OS X Mountain Lion上,如果这是相关的),它又回到了我之前使用的gemset。那时我不知道,所以我跑了bundle install
。我注意到它安装了我已经安装在Octopress gemset中的所有宝石,所以我想出了发生了什么。问题是:是否有一种简单的方法可以撤消此bundle install
,这样我就不会在其他gemset中拥有所有这些宝石,或者我应该通过gem手动卸载它们(它们是相当多的)。感谢。
答案 0 :(得分:3)
你可以用rvm清空gemsets:
rvm gemset empty
它将从所选gemset中删除所有gem,您也可以临时切换到其他gemset:
rvm @the-other-gemset do rvm gemset empty
答案 1 :(得分:1)
几天前,我遇到了同样的问题(再一次)并通过编写此命令解决了这个问题:
$ threshold="20m"; dir="`rvm gemdir`/gems"; find -X "$dir" -type d -maxdepth 1 -mindepth 1 -mtime -"$threshold" | xargs basename | sed -e 's/-\(\([0-9]\{1,\}.\)*[0-9]\{1,\}\)$/ \1/g' -e 's/\(.*\) \(.*\)/gem uninstall \1 --version \2 --executables --ignore-dependencies \&/g'
它会根据需要生成尽可能多的命令行,以卸载在给定阈值(超过20分钟)之后添加的每个gem。然后,您只需在命令提示符下复制并粘贴这些行。
在执行我的命令之前:
threshold
设置为适合您需要的值例如,上面的命令可以生成以下行:
gem uninstall elasticsearch --version 1.0.1 --executables --ignore-dependencies &
gem uninstall elasticsearch-api --version 1.0.1 --executables --ignore-dependencies &
gem uninstall elasticsearch-extensions --version 0.0.14 --executables --ignore-dependencies &
gem uninstall elasticsearch-transport --version 1.0.1 --executables --ignore-dependencies &
如果您想了解更多信息,我在此处发布了一篇文章:http://noteslog.com/post/how-to-undo-a-wrong-bundle-install/