分享 一起来动手写个 gem

camel · 发布于 2012年02月13日 · 最后由 jiyinyiyong 回复于 2015年04月20日 · 6992 次阅读
558

让我们一起来写个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 git@github.com:camsong/aaaaaaaa.git
git push -u origin master

7、其实就是git上传代码而已。

git add .
git commit -m 'first commit'
#git remote add origin git@github.com: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

共收到 11 条回复
713

前几天无聊刚写了个 gem install easyeditor 用来模糊更方便的打开文件 比如:/project_dir/lib/kkk/dd/easyeditor.rb 在/project_dir下,只要 ee easyeditor 就可以直接用vim打开 vim是默认配置,$EDITOR可以改,或直接用-e,大概意思就是 ee a1/b1/c1 这样的会匹配 a1*/b1/*c1 这样的文件,多个文件会有选择 我这人太懒,不喜欢打太多的字,tab一有重复还得再打

96

喜欢+1

以前都是手动一个一个创建目录和文件的⋯⋯

188

我以前也是手动创建目录和文件。前不久开始用bundler来创建了:https://github.com/sitepoint/security_guard :D

558

#1楼 @azhao 工具收了。我用了一个类似的gem install gemedit。方便查看gem的源文件。在任何目录下只要运行gem edit rails就能打开rails的源码。

56

喜欢这个帖子,mark一下

96

#4楼 @camel 这个工具真赞,多谢了!

1

bundle 已经有几个便捷的 rake 任务,可以 rake -T 看一下

304

支持技术贴

96

#1楼 @azhao interesting tool, thx

90

Markdown 标记错了还...

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册