创建Gem并将其发布到RubyGems.org

上篇提到过我在写一个架构的Demo,主要是做一人Scable的架构基础,基于该框架(平台)可以创建出各样的应用,也算是一个最佳实践。

不得不说,写起来真要命,我已经连续一个月熬夜,现在进展略有不顺。Rails 3中不少好的东西可以挖掘,但应用和教材偏少。这不是重点,重点是,我的项目基础结构已经成型了,今天也支rubygems.org上抢注了phoenix的名字。

具体为什么叫phoenix?主要是我做事情太多的半途而废,这些我用凤凰涅槃来形容决心,无论如何我会将学到的好的模式、组织都应用中来,也会积极为中文Rails圈做贡献。

####关于Gem和RubyGems.org

如果不了解Gem,请先看这里:

http://lanvige.com/posts/rubygem_start_guide/

简单的说,Gem就是一个Ruby程序的包,你可以把一些常用的功能写在一起,打成个包,这样每次用起来直接引用就是,很好的复用性,同样也可以通过Gem包的组合型式来管理自己的项目。

RubyGems.org 是Gem官方的Gem托管中心,可以很方便的将自己的一些公共的Gem放在上面,这样所有人都可以来通过你所创建的Gem来快速搭建开发平台。

####注册和本机配置

首先开发者需要在该网站注册账号,完成之后,在profile里会看到网站已为你生成一个API Key,同时也提供一条命令用于本机的快速配置。

输入该命令,再键入你所注册用户的密码,就可以了。

1
$ curl -u Name https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials

####打包Gem

我们假设已经完成一个可被打包的Gem,如何创建Gem,见:http://guides.rubygems.org/make-your-own-gem/

同时记得完成你的gemspec的配置:http://guides.rubygems.org/specification-reference/

也可以参见Phoenix Engine项目中的配置

1
https://github.com/lanvige/phoenix/blob/master/phoenix.gemspec

其中,s.rubyforge_project是用来配置RubyGems的发布信息的,后面值为项目在RubyGems上的名称。

对应的路径为:rubygems.org/gems/name

通过gem build name.gemspec 命令来为项目生成name.gem文件。更多build见:http://guides.rubygems.org/command-reference/#gem_build

####发布

Gem文件创建之后,就可以将其发布到rubygems上了,在终端中输入:

1
$ gem push name.gem

项目会自动的发布到服务器上,然后在dashboard中就可以看到自己的项目了。

####Phoenix Engine

1
https://rubygems.org/gems/phoenix