近期看了下Cocoapods的一部分代码,结合之前做的iOS项目脚手架工具,突发奇想能不能做一个内部的工具库呢(类似于Cocoapods)。
首先要解决的问题就是怎么样发布自己写的工具库,有没有类似于RubyGems这样的托管平台呢?查了一番资料找到了一个开源的项目- geminabox, 可以搭建一个托管的平台。
搭建Gem私服
前提条件是需要有Docker的环境,如果没有的话可以参考:CentOS安装Docker。
(1) 创建并运行容器
docker run -d -v /home/docker/geminabox:/webapps/geminabox/data --name geminabox -p 9292:9292 -P -h geminabox spoonest/geminabox:latest
(2) 安装geminabox客户端
gem install geminabox
PS : 如果是MacOS自带ruby环境。Ruby的版本管理可以使用RVM工具
安装完成之后访问: http://ip:9292即可打开:

Gem模块开发与发布
(1) 创建模板工程
使用bundler gem [name]命令可以一键创建项目的结构,相当的方便:
⇒  bundler gem demo
Creating gem 'demo'...
MIT License enabled in config
      create  demo/Gemfile
      create  demo/lib/demo.rb
      create  demo/lib/demo/version.rb
      create  demo/demo.gemspec
      create  demo/Rakefile
      create  demo/README.md
      create  demo/bin/console
      create  demo/bin/setup
      create  demo/.gitignore
      create  demo/LICENSE.txt
Initializing git repo in /Users/zengjing/demo/demo
如果是第一次使用可能会有些提示问题需要填写。
(2) 编译打包
发布gem库需要先进行打包,使用gem build [gemspecname]命令可以打包:
⇒  gem build demo.gemspec
  Successfully built RubyGem
  Name: demo
  Version: 0.1.0
  File: demo-0.1.0.gem
出现Successfully built RubyGem表示编译打包完成。
(3) 上传
接下就是之前安装的geminabox派上用场的时候了,使用gem inabox [gemfile]可以一键上传。
gem inabox [gemfile]
使用
在Gemfile中加入如下代码:
source "http://192.168.3.18:9292" do
	gem 'demo', '~> 0.1.0'
end
然后安装
bundle install