近期看了下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