铁轨束干净

iGb*_*nam 86 ruby ruby-on-rails bundler

更新捆绑包后,您将拥有一些可能已过时的宝石 - 因为已安装该宝石的较新版本.在bundle可执行文件下没有这样的命令即bundle clean.如何摆脱这些过时的宝石?

这是尝试减少我的rails应用程序中的slu size大小.

Dav*_*ler 127

如果您使用的是Bundler 1.1或更高版本,您可以使用bundle clean,就像您想象的那样.如果您正在使用bundle install --path(Bundler使用--path管理您指定的位置,因此负责删除过时的宝石),这是多余的,但如果您使用Bundler将gem作为系统宝石安装,那么bundle clean --force将删除任何系统宝石而不是您的Gemfile需要.盲目明显的警告:如果您有其他依赖于Gemfile中不存在的系统宝石的应用程序,请不要这样做!

Pat Shaughnessy bundle clean在bundler 1.1中有很好的描述和其他新增功能.

  • 对于那些使用rvm的人,请注意`bundle clean --force`不会触及您的全局宝石,只会覆盖当前gemset中的宝石.所以`bundle clean --force`会产生相同的结果,并且比`rvm gemset empty`然后`bundle install`更快. (26认同)
  • 免责声明:如果你不小心,"捆绑清洁 - 力量"可以吹走大量的宝石.这应该是这一回应的第一线......特别是因为它有这么多的选票.小心! (18认同)

tru*_*ich 36

如果您正在使用RVM,则可以使用rvm gemset empty当前的gemset - 此命令将删除安装到当前gemset的所有gem(gemset本身将保留在原位).然后运行bundle install以安装宝石的实际版本.还要确保你没有删除像rake,bundler等一般的宝石rvm gemset empty(如果是这种情况,那么gem install在之前手动安装它们bundle install).


Pan*_*kos 21

如果您使用的是RVM,则可以将宝石安装到gemsets中.这样,当您想要执行完全清理时,您可以简单地删除gemset,从而删除其中安装的所有gem.您的另一个选择是简单地卸载未使用的gem并重新运行bundle install命令.

由于bundler是一个项目每个项目的宝石版本控制工具,因此它不提供bundle clean命令.这样做意味着可以删除与其他项目相关的宝石,这是不可取的.这意味着bundler可能是用于管理gem目录的错误工具.我个人的建议是使用RVM gemsets在某些项目或ruby版本中对您的宝石进行沙盒处理.

  • 无需删除gemset,您只需键入'rvm gemset empty gemset_name',然后再次运行'bundle install'. (41认同)
  • 捆绑清洁--force将完成这项工作 (9认同)

Tyl*_*ock 13

老实说,我遇到了捆绑循环依赖的问题,最好的方法是rm -rf .bundle.保存自己的头痛,只需使用锤子.

  • 谢谢你的想法.虽然对我来说,使用更大的锤子有帮助.`rvm implode --force`然后重新安装rvm (2认同)