在多人协作的环境里管理依赖一致性是一件很蛋疼的事情。

就拿使用 CocoaPods 的团队来说,在某个时间点,你想把它升级到某个版本,

最挫的办法是通知所有人(包括 CI)都升级到特定的版本,保持版本的一致,但这不能解决 dev,master 分支的问题,要升就得全升级,不然不同版本间会互相影响;

比较好一点的方式是在工程 setup 的脚本里面检测依赖的版本,并帮使用者自动升级到该版本,比如像这样,就不用关心 master,dev 分支依赖一致性的问题了,用哪个分支的代码依赖的就是哪个版本,缺点是需要编写脚本,麻烦;

最好的方式就是使用 bundler 来管理依赖了,只需要创建一个 Gemfile,每次 setup 的时候执行
bundle install ,所有开发者的 ruby 依赖就都是一致了的。

如何使用

如果你的工程从未集成过 bundler,那么需要使用 bundle init 创建出 Gemfile,

> bundle init
Writing new Gemfile to /xxx/Gemfile

然后修改 Gemfile,具体可以加什么内容可以看这里

source "https://rubygems.org"

gem 'CocoaPods', '1.5'

这样就 ok 了,每次 setup 工程的时候,执行 bundle install 就可以保证大家的依赖都是一致的。升级版本只需要修改一下版本号,一切就是这样简单


写到这里,我还想分享一下我 setup 工程的方式,那就是使用 Makefile我在 KickStarter 开源的工程里学到的。一层简单的封装不光把初始化一个工程的一连串操作都包在了一起,还把这个过程地入口变得足够简单,一句 make 足矣。