从一个想法开始,以一个可分发的 Ruby 代码包结束。
与其他用户共享你的 gem 代码的方法。
介绍
现在你已经 创建了你的 gem,你可能已经准备好分享它了。虽然创建仅用于组织大型私有项目中代码的私有 gem 是完全合理的,但更常见的是构建 gem 以便它们可以被多个项目使用。本指南讨论了你可以与世界分享你的 gem 的各种方法。
共享源代码
从作者的角度来看,与其他开发者共享 gem 的最简单方法是将其以源代码形式分发。如果你将 gem 的完整源代码放在一个公共 git 仓库中(通常,但并非总是,这意味着通过 GitHub 共享它),那么其他用户可以使用 Bundler 的 git 功能 来安装它。
例如,你可以在项目中安装 wicked_pdf gem 的最新代码,方法是在你的 Gemfile 中包含以下行
gem "wicked_pdf", :git => "git://github.com/mileszs/wicked_pdf.git"
直接从 git 仓库安装 gem 是 Bundler 的一项功能,而不是 RubyGems 的一项功能。以这种方式安装的 gem 在运行
gem list
时不会显示。
提供你自己的 Gems
如果你想控制谁可以安装 gem,或者直接跟踪围绕 gem 的活动,那么你将需要设置一个私有 gem 服务器。你可以 设置你自己的 gem 服务器 或使用商业服务,例如 Gemfury。
RubyGems 2.2.0 及更高版本支持 allowed_push_host
元数据值,以将 gem 推送限制到单个主机。如果您发布私有 gem,则应设置此值以防止意外推送至 rubygems.org。
Gem::Specification.new 'my_gem', '1.0' do |s|
# ...
s.metadata['allowed_push_host'] = 'https://gems.my-company.example'
end
有关私有 gem 服务器选项的最新列表,请参阅 资源 指南。
发布到 RubyGems.org
将 gem 分发给公众消费的最简单方法是使用 RubyGems.org。发布到 RubyGems.org 的 gem 可以通过 gem install
命令或使用 Isolate 或 Bundler 等工具进行安装。
首先,您需要在 RubyGems.org 上创建一个帐户。访问 注册 页面并提供您控制的电子邮件地址、用户名和密码。
创建帐户后,在推送 gem 时使用您的电子邮件和密码。(RubyGems 会将凭据保存在 ~/.gem/credentials 中,因此您只需登录一次。)
请注意,您的 gem 名称必须是唯一的。它不能与已发布到 RubyGems.org 的其他 gem 的名称相同。
要发布名为“squid-utils”的新 gem 的 0.1.0 版本
$ gem push squid-utils-0.1.0.gem
Enter your RubyGems.org credentials.
Don't have an account yet? Create one at https://rubygems.org.cn/sign_up
Email: gem_author@example
Password:
Signed in.
Pushing gem to RubyGems.org...
Successfully registered gem: squid-utils (0.1.0)
恭喜!您的新 gem 现在已准备好供世界上任何 ruby 用户安装!
RubyGems.org 上的推送权限
如果您有多个 gem 维护者,您可以通过 gem owner 命令 授予您的同事维护者推送 gem 到 rubygems.org 的权限。
Gem 安全
请参阅 安全 页面。