小激动。
写在前面
成功发布了一个轮子,i18n-processes , 一个在i18n-tasks上进行了改造的轮子,看到它发布成功的那一刻,真的是开心到飞起,虽然这个gem并不是那么useful, 但是造轮子的感觉还是很赞的。
好,回正题,继上一篇创建你的第一个gem, 这篇详细写一下如何publish your gem,同时记录下遇到的问题。
正文
发布其实很简单,三步走:
注册或者登陆rubygems官网https://rubygems.org, 搜索下,确保你的gem名唯一 。
在你gem文件所在的目录下,创建gem, 终端运行:
gem build yourgem-name
这一步很重要,如果没有做,发布的时候,会出现
While executing gem ... (Gem::Package::FormatError)
的报错。发布
终端运行:
gem push yourgem-name-version.gem ## version 为版本号,比如: gem push i18n-processes-0.1.0.gem
更新版本
比如你的初始版本是0.1.0, 你更新了这个gem,添加了一些新的功能,修复了一些bug or whatever, 总之你的版本升级了,比如改为0.1.1,如何让published的0.1.0也更新到0.1.1?
git add
,git commit
,git push
后,确保everything up-to-date,终端运行:rake release
请确保你已经修改了版本号,否则会出现:
Repushing of gem versions is not allowed.
的报错。一切无误后,会出现
Pushed yourgem-name version to rubygems.org
, 表示已经成功了。
遇到的问题:
HTTP Basic: Access denied.
呃,这是个有点白痴的问题,检查你的email和password,确认没有输入错误,基本就OK了。之所以提到这个问题,是rubygem的issuesCannot gem push (HTTP Basic: Access Denied) #583中有这块的讨论,有人提到了gem版本的问题,但是只要你的gem不是特别老,比如2.0.6啥的,是不会因为gem版本的原因而出现上诉报错的。
just check your email and password, that’s enough.