Publishing your gem

小激动。

写在前面

成功发布了一个轮子,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.

参考

publishing your gem