更新捆绑软件后,您将拥有一些可能已过时的gem-因为已安装了该gem的较新版本。bundle
可执行文件下没有这样的命令bundle clean
。人们如何摆脱这些过时的宝石?
这是尝试减少我的rails应用程序中的块大小。
Answers:
如果您使用的是Bundler 1.1或更高版本,则可以bundle clean
按照您的想象使用。如果您正在使用,则这是多余的bundle install --path
(Bundler管理使用--path指定的位置,因此负责删除过时的gem),但是如果您已使用Bundler作为系统gem安装gem,bundle clean --force
则将删除不属于任何系统的gem您的Gemfile要求。显而易见的警告:如果您有其他依赖Gemfile中没有的系统gem的应用程序,则不要这样做!
Pat Shaughnessy很好地描述了bundle clean
捆绑程序1.1和其他新功能。
如果您使用的是RVM,则可以将其rvm gemset empty
用于当前gemset-此命令将删除安装到当前gemset的所有gem(gemset本身将保留在原位)。然后运行bundle install
以安装gem的实际版本。另外,请确保在此过程中不要删除诸如rake,bunder等常规的gem rvm gemset empty
(如果是这种情况,请通过gem install
之前手动安装它们bundle install
)。
如果您使用的是RVM,则可以将gems安装到gemsets中。这样,当您要执行完全清理时,您可以简单地删除gemset,从而删除其中安装的所有gem。您的另一个选择是简单地卸载未使用的gem,然后重新运行bundle install
命令。
由于捆绑程序旨在成为每个项目的gem版本控制工具,因此它不提供bundle clean
命令。这样做将意味着也有可能删除与其他项目关联的宝石,这是不希望的。这意味着捆绑程序可能是用于管理gem目录的错误工具。我个人的建议是在某些项目或红宝石版本中使用RVM宝石集对您的宝石进行沙箱处理。
我假设您将宝石安装到vendor/bundle
?如果是这样,为什么不删除所有宝石并进行清理bundle install
呢?
在寻找相同问题的答案时,我遇到了gem_unused。
您可能还想阅读这篇文章:http : //chill.manilla.com/2012/12/31/clean-up-your-dirty-gemsets/
源代码在GitHub上可用:https : //github.com/阿波宗/ gem_unused
bundle clean --force
不会影响您的全局gem,而只会影响您当前的gemset中的那些。所以bundle clean --force
会产生相同的结果,并更快然后rvm gemset empty
后面bundle install
。