前言
最好的教程当然还是官方文档。
手把手
以新建一个名为 gleksayhi 的 gem 🙋🌰
新建 gleksayhi.rb 文件,功能仅为一行打印
新建 gleksayhi.gemspec
由 gemspec 新建一个 gem
gem build gleksayhi.gemspec
安装本地 gem
gem install ./gleksayhi-0.0.1.gem
查看是否安装上,并验证 gem 功能
接下来先注册一个 https://rubygems.org/ 的账号,然后浏览器访问 https://rubygems.org/api/v1/api_key.yaml,输入账号密码,下载 api_key.yaml 文件,将文件改名为 credentials,放置 ~/.gem 目录下。修改文件权限
chmod 0600 ~/.gem/credentials
现在你可以发布你的 gem 到 RubyGems.org,来分享你的 gem 了
gem push gleksayhi-0.0.1.gem
最后,可以查询下远程你的 gem
gem list -r gleksay
大功告成。
One more thing
解决依赖
另外,随着功能的复杂性提高,多文件肯定是必不可少的,需要处理文件的依赖关系,也就是依赖方 require 被依赖方。此时,gemspec 里的 file 配置就需要做些改动,包含所有文件。
当然,也有一些解决方案,解决众多文件配置 gemspec 问题。
- https://github.com/seattlerb/hoe
- https://github.com/technicalpickles/jeweler
- https://github.com/ruby/rake
- https://bundler.io/docs.html
- https://github.com/wycats/newgem-template/blob/master/newgem.gemspec
添加可执行文件
添加 bin 目录,新建 gleksayhi 文件
mkdir bin
touch bin/gleksayhi
chmod a+x bin/gleksayhi
测试
为 gem 加上测试尤为重要,可以帮助你和他人知道你的代码是可工作的。
Minitest is Ruby’s built-in test framework. 当然你也可以选择 RSpec。
新建 Rakefile
新建 test 目录和测试用例 test_gleksayhi.rb
执行用例
文档
最后,为你的 gem 生成 doc 吧,大多数的 gem 默认使用 RDoc 生成文档。