分享 一起来动手写个 gem

camel · 2012年02月13日 · 最后由 ecloud 回复于 2018年01月24日 · 11930 次阅读

让我们一起来写个 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

前几天无聊刚写了个 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 一有重复还得再打

喜欢 +1

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

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

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

喜欢这个帖子,mark 一下

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

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

支持技术贴

#1 楼 @azhao interesting tool, thx

Markdown 标记错了还...

想请教一下,怎么把指令放到全局,类似安装好 puna 以后直接就可以用 puma -xx -xx 这样

Ice-storm 回复

在 Gem 包下创建 bin 目录,然后创建 puma.rb 文件。

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