发布你的第一个 ruby gem 到 rubygems.org

🕘
⏱️
👁️ * 阅读

前置工作:

  • 检查文件完整
  • 确保 .gemspec 文件信息无误,必要信息完整

通过终端登录 RubyGems

前置要求:

  • .gemrc 中配置的源必须是 rubygems.org(检查当前源命令 gem sources -l),配置方式如下:
1
2
:sources:
  - https://rubygems.org/
  • 如果电脑无法访问 rubygems.org 或者访问慢,终端就需要加上代理

第一次使用发布功能需要先登录,在终端中运行:

1
gem signin

设置说明

  • Email: 输入你rubygems账号,如果没有注册先注册 https://rubygems.org/sign_up
  • Password: 输入你的rubygems密码
  • API Key name [******]: 会为当前电脑创建一个密钥文件,这里是输入密钥的名称,可以随意输入,在 rubygems 可以查看和管理,相当于就是api-key的名称。
  • 权限设置,可以先随意设置,后面可以去rubygems修改,输入y或者n然后回车(y是启用,n是禁用),show_dashboard 必须选 n ,否则无法完成
    • index_rubygems 必须输入y
    • push_rubygem 推送gem,必须输入y
    • yank_rubygem 移除gem,建议n
    • add_owner 新增用户,建议n
    • remove_owner 移除用户,建议n
    • access_webhooks 存取webhooks,建议n

当返回 Signed in with API key: ***** 表示登录成功

常见错误

账号密码错误或者源不是https://rubygems.org/,小概率是网络问题可能需要使用代理:

1
2
error: Invalid credentials
code: 401

网络问题可能需要使用代理: ERROR: While executing gem ... (Net::OpenTimeout)

构建 gem 包

请将 项目名称 换成你的项目名称和 .gemspec 中的 spec.name 一致。

1
gem build 项目名称.gemspec

比如我的项目名称是jekyll-baidu-push那我的命令是 gem build jekyll-baidu-push.gemspec 执行成功后会生成一个 .gem文件,命名是spec.name+ spec.version ,例如 [jekyll-baidu-push-0.1.0.ge](http://jekyll-baidu-push-0.1.0.ge/)m

发布 gem 到 rubygems.org

jekyll-baidu-push-0.1.0.gem 是文件名,对应刚才生成的文件。请修改为你自己的文件名。

1
gem push jekyll-baidu-push-0.1.0.gem

返回 Successfully registered gem: jekyll-baidu-push (0.1.0) 表示推送(上传)成功

小贴士

升级版本:必须提升 version,否则无法发布。

.gitignore:忽略文件推荐:

1
2
.gem
pkg/

我的第一个 gem

  • jekyll-baidu-push Jekyll plugin to push URLs to Baidu. 每次构建的时候将 Jekyll 的链接推送到百度搜索索引。

转载请注明转自:一极乐https://yijile.com/zh/publish-your-first-ruby-gem-to-rubygemsorg/

CC BY-NC-SA 4.0 声明
本文采用 CC BY-NC-SA 4.0方式授权。
转载请注明出处和本文链接,说明是否进行修改,不得用于商业用途,使用相同方式共享。