铁轨捆绑干净

更新一个包后,你会有一些可能已经过时的gem – 因为该gem的新版本已经安装。 bundle可执行文件中没有这样的命令,即bundle clean 。 如何摆脱这些过时的gem?

这是一个尝试减less我的Rails应用程序中的slu size大小。

如果你使用的是Bundler 1.1或更高版本,你可以使用bundle clean ,就像你想象的那样。 这是多余的,如果你使用bundle install --path (Bundlerpipe理你用–path指定的位置,所以需要负责删除过时的gem),但是如果你使用Bundler来把gems安装成系统gems,那么bundle clean --force将删除您的Gemfile所不需要的任何系统gem。 极其明显的警告:如果你有其他的应用程序依赖不在你的Gemfile中的系统gem,请不要这样做!

Pat Shaughnessy对bundle clean 1.1中的bundle clean和其他新增function有很好的描述。

如果您使用的是RVM,则可以使用rvm gemset empty作为当前rvm gemset empty – 此命令将删除安装到当前gemset的所有gem(gemset本身将保留原位)。 然后运行bundle install以安装gem的实际版本。 另外,请确保在rvm gemset empty期间不要删除rake,bundler等常规gem(如果是这种情况, gem installbundle install之前通过gem install手动安装它们)。

如果您使用的是RVM,则可以将gem安装到gem上 。 这样,当你想执行一个完整的清理,你可以简单地删除gemset,这反过来将删除所有安装在它的gem。 您的其他select是简单地卸载您未使用的gem,并重新运行您的bundle install命令。

由于打包器是一个项目的每个项目的gem版本工具,它不提供bundle clean命令。 这样做意味着可能会去除与其他项目相关的gem,这是不可取的。 这意味着bundler可能是用来pipe理你的gem目录的错误工具。 我个人的build议是使用RVM gemset在某些项目或ruby版本中对沙箱进行沙箱。

老实说,我有捆绑器循环依赖的问题,最好的办法是rm -rf .bundle 。 救自己头痛,只用锤子。

当search同一个问题的答案时,我碰到了gem_unused 。
你也可能想读这篇文章: http : //chill.manilla.com/2012/12/31/clean-up-your-dirty-gemsets/
源代码在GitHub上可用: https : //github.com/apolzon/gem_unused

我假设你安装gem到vendor/bundle ? 如果是这样,为什么不删除所有的gem,并做一个干净的bundle install

只要从您的Gemfile中删除过时的gem。 如果你正在谈论Heroku(你没有提到这个),那么就会使用该文件的当前内容编译每个新版本的slug。