Manage ruby dependencies in iOS Project

在多人协作的环境里管理依赖一致性是一件很蛋疼的事情。
 
就拿使用 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 足矣。
 

© Xinyu 2014 - 2024