私有 Gem Registry 计划

这是Phoenix Engine计划中的一部分,假设一些企业基于Phoenix做了很多的Extension,而这些Gems是不被开源的,也就是不可能放到rubygems.org上,那么Gem的安装和版本依赖就成了问题。

而我的设想是,架设一台企业私有的Gem Provider Server,在项目中加入该Server 的源,这样安装时就可以先去该源中查找,找到后就下载安装,找不到去另外的源里安装。

如何架设自己的 gem server,参见这里:
http://guides.rubygems.org/run-your-own-gem-server/

如果是个人使用,也可以考虑使用 Github:
http://www.cowboycoded.com/2010/07/23/working-with-private-rubygems-in-rails-3/

当然,在中国,我们得感谢 G.F.W,使得我们有机会在运行 gem install/bundle update 时能出去喝杯 Cafe。如果团队每个人运行一次bundle是一件多恐怖的浪费,所以 Gem Server 上对Gem的缓存显得也格外重要。

所以之前有人专门写过如何利用 linode 做代理:

这样,就有了下面的需求流程:

架设私有 gem registry, 所有项目中配置使用该源,如果查找时在该仓库中能找到,就直接返回下载,如果找不到,再去 RubyGems.rog 上下载,并在 Server 中 Cache,下个请求时直接返回,这样即能有自己的仓库,同时还能提高速度。

除了提供下载之外,还应有相应的工具来支持发布,更新和其它管理操作。

这是 Phoenix Engine 在发布方面的方案计划,当然现阶段不会去做,而测试时,用的是 github 的方案。

—-

刚 Google 了下,确实有家公司在做这方面的事情,并且做的还相当不错。

https://gemfury.com