铁轨捆绑干净
更新一个包后,你会有一些可能已经过时的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 install
在bundle 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。