让我们一起来写个 gem,上传到http://rubygems.org 供别人调用,并把源码放到 github 上托管。
今天整了个 bootstrap 2.0 的 gem,非常纯净,如果你讨厌一些 gem 恶心的 DSL,可以试下我的: https://github.com/camsong/mini-bootstrap-rails
把大致方法记录一下,供大家参考,欢迎批评 XD
以创建一个名为 new_gem 的 gem 为例。
1、注册一个https://rubygems.orghttp://github.com帐号。不懂问老师。和
2、生成 gem 文件
$ bundle gem new_gem
create new_gem/Gemfile
create new_gem/Rakefile
create new_gem/.gitignore
create new_gem/new_gem.gemspec
create new_gem/lib/new_gem.rb
create new_gem/lib/new_gem/version.rb
Initializating git repo in /Users/camel/new_gem
3、编码。 打开 new_gem.gemspec,这个文件里面都是这个 gem 的一些说明。 找到
s.summary = %q{TODO: Write a gem summary}
s.description = %q{TODO: Write a gem description}
去掉其中的 TODO,可先改为
s.summary = %q{"just for test"}
s.description = %q{"just for test"}
代码尽量都放到 lib/目录下。这里暂不编码。
4、发布 gem 到 rubygems
$ gem build new_gem.gemspec
WARNING: no homepage specified
WARNING: description and summary are identical
Successfully built RubyGem
Name: new_gem
Version: 0.0.1
File: new_gem-0.0.1.gem
会在当前目录下生成 new_gem.gem
5、发布 gem 到 rubygems.org
gem push new_gem-0.0.1.gem
然后根据提示输入 rubygems.org 的用户信息就 ok 了。
6、在 github 上新建一个 repository,名字尽量保持一致,所以我们取为 new_gem。 这一步一定要在网页上操作。创建完成后会有一个全是命令的页面。 其中应该包括:
git init
touch README
git add README
git commit -m 'first commit'
git remote add origin [email protected]:camsong/aaaaaaaa.git
git push -u origin master
7、其实就是 git 上传代码而已。
git add .
git commit -m 'first commit'
#git remote add origin [email protected]:camsong/new_gem.git
git remote add origin https://github.com/camsong/new_gem.git
#我喜欢下面这种https的形式,上面是ssh的方式。注意两都如何转换。
git push -u origin master
8、当代码更新后 先修改/lib/new_gem/version.rb,增加版本号。 然后重新执行 4,5 步来更新 rubygems.org 执行第 7 步来更新 github
Enjoy! 来杯 coffee,一些搞定了。 以后就可以在 Gemfile 中添加 gem 'new_gem'来引用了。
原文在: http://rubyer.me/blog/1491
参考: http://blog.xdite.net/posts/2012/01/04/how-to-pack-a-gem/ http://asciicasts.com/episodes/245-new-gem-with-bundler