メモ的な何か

技術的な私のメモになる予定です。

rubygem.orgにgemを公開する手順

はじめに

アプリをrubygems.orgに公開するための手順を確認しました。
この手順で作成したアプリを公開します。

gemの作成

以前の記事にも記載しましたが、以下の方法でgemの雛形が作成できます。
この方法で作成して置けば、gemを公開する準備は整っています。

$ bundle gem test

githubに登録

rubygems.orgに公開するにはそのgemが公開されているGitリポジトリになければなりません。
基本はGitHubでいいと思います。
アカウント作成とSSH認証については今回は省略します。

作成された雛形はすでにgit管理されているのでそのまま扱えるのですが、プロジェクトの作成上で公開したくないファイルについては.gitignoreを更新して対応する必要があります。

$ cd test
$ git add -A
$ git commit -m "コメントは入れようね!"
$ git remote add origin git@gitub.com:<githubアカウント名>/<作成したプロジェクト名>.git
$ git push -u origin master

rubygems.orgのアカウント登録

rubygemsのサインアップでアカウント登録します。

rubygems APIアクセス鍵の登録

アカウント登録が完了したらプロフィール編集ページAPI ACCESSCurlコマンドを実行します。

$ curl -u <rubygemsアカウント名> https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials; chmod 0600 ~/.gem/credentials
Enter host password for user <rubygemsアカウント名>:<rubygemsのパスワードを入力>

gemの作成

以下のコマンドでプロジェクトからgemの作成ができます。
この項目は特にgemの公開とは関係ないですが、公開せずにgemを使ったりできます。

$ cd test
$ bundle exec rake build # => pkg/以下に作成されます。

gemの中身はgitで管理されているものになりますが、一応以下のコマンドでgemを展開できます。

$ gem unpack <gem名>

gemspecの修正

前の記事に書いたTODOの修正等はもちろんだが、 rubygemsに公開する場合は以下をコメントアウトしないと公開できません。

  if spec.respond_to?(:metadata)
    spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
  else
    raise "RubyGems 2.0 or newer is required to protect against " \
      "public gem pushes."
  end

rubygemsへの公開

上記の各項目(gemの作成以外)が完了していれば以下のコマンドでrubygemsに公開できます。

$ cd test
$ bundle exec rake release

しかしgit add前のコミットしていない内容が存在するとエラーとなることがあるので、気をつける必要があります。 その場合はコミットまで完了するか、大丈夫であればgit checkoutで元に戻す等で対応できます。

Version更新

余談だが、version.rbの以下の数値を修正することで公開するバージョンを明示的にできます。

  module ConnpassToCalendar
    VERSION = "0.1.0"
  end

参考

gem を作って rubygems へ登録/公開する手順

rake releaseでコミットを先にしろと怒られた時の対応

Gemを作ってRubygemsに公開する手順 - コンユウメモ