岁岁年,碎碎念

Gem,写一个吧

2022.04.16     116

前言

最好的教程当然还是官方文档

手把手

以新建一个名为 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 问题。

添加可执行文件

添加 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 生成文档。

图片