曾静的博客

但行好事,莫问前程.

嗨,我是曾静 (@devzeng),目前暂居深圳。


这是我用来记录平日学习笔记的地方,欢迎您的访问.

如何创建一个私有的Gem库

近期看了下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即可打开:

geminabox.png

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

参考资料

1、如何开发一个自己的 RubyGem?

2、geminabox

最近的文章

使用Python批量将Word文档转换为PDF

最近一直在整理数据,刚好有一批Word文档需要批量另存为PDF格式的文档,使用win32com操作Word,写了个Python的脚本用于批量进行转换。1、环境准备(1) 安装pip install pywin32(2) 初始化由于我的机器上面安装的是Office 2010, 安装完成pywin32之后,进入到Python安装路径\Lib\site-packages\win32com\client的目录下面执行如下代码:python makepy.py -d "Microsoft Word ...…

Note继续阅读
更早的文章

使用NW.js开发桌面应用程序

前段时间要写一个桌面的应用,做一个简单的输入框供用户输入验证码的小功能,程序最开始是用Python写的,那么GUI一开始就考虑使用wxPython,虽然实现了功能但是总觉得太过于麻烦。之前了解过关于Node.js开发桌面应用的技术,目前使用的比较多的都是nw.js 和 electron,由于下载electron的时候出现了一些问题所以就选择了nw.js来学习。NW.js(之前叫做node-webkit)能够通过DOM直接调用Node.js模块,实现通过Web技术来编写应用程序。环境搭建 ...…

Note继续阅读