読者です 読者をやめる 読者になる 読者になる

Ruby Gemを作って公開するための5つの手順

本日のお裾分けシリーズ

今月からRubyメインになりました。
Ruby Gem公開をしたので手順を記事にします。

実行環境

$ ruby -v
ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin15]
$ gem -v
2.4.5.1
$ bundler -v
Bundler version 1.10.6
$ rake -V
rake, version 12.0.0

TL;DR

## Gem用プロジェクトテンプレートを作成する
bundle gem your_gem_project --test
cd your_gem_project/
## プロジェクト詳細を設定する
vim ./your_gem_project.gemspec
## 機能を実装する
vim ./lib/your_gem_project.rb
bundle install
bundle exec rspec
rake build
## Gitサーバーを立てる
git add .
git commit -m "write first function."
git remote add origin https://github.com/username/your_gem_project.git
git push -u origin master
## rubygemsアカウントを作成し、公開する!
curl -u username https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials; chmod 0600 ~/.gem/credentials
cat ~/.gem/credentials
rake release

目次

  1. Gem用プロジェクトテンプレートを作成する
  2. プロジェクト詳細を設定する
  3. 機能を実装する
  4. Gitサーバーを立てる
  5. rubygemsアカウントを作成し、公開する!

Gem用プロジェクトテンプレートを作成する

まずはBundlerを使ってプロジェクトテンプレートを生成します。

bundle gem your_gem_project --test
cd your_gem_project/

今回は、testファイルも生成したので–testオプションを利用していますが必須ではありません。
Bundler公式には全オプションとその説明が書いてあります。
リンクはBunder v1.10のもの。

CODE_OF_CONDUCT.mdを作りますか?とか
LICENSE.txtはMITで良いですか?とか聞かれた気がしますが全てyesにしました。

プロジェクト詳細を設定する

your_gem_project.gemspecにプロジェクト詳細を書くのですが、
生成したての状態だとtodoとなっている部分があり、これを書かないとビルドで怒られるので書きましょう。

if spec.respond_to?(:metadata)から始まる部分は、非公開にしたい場合は設定する必要があるそうです。
今回はrubygemsにて公開しようとしているので消します。

機能を実装する

./lib/your_gem_project.rbにgemで必要な機能、./spec/your_gem_project.rbにそのテストを書きます。

bundle install
bundle exec rspec

でテストが通ることを確認しましょう。

Gitサーバーを立てる

githubかどこかにgitのリモートサーバーを立てて、pushしておきましょう。
あとで公開するときに、リモートサーバーがないと怒られます。

git add .
git commit -m "write first function."
git remote add origin https://github.com/username/your_gem_project.git
git push -u origin master

rubygemsアカウントを作成し、公開する!

rubygemsのアカウントを作りましょう。ないと公開できません。
プロフィール編集画面の下の方に、あなたのAPI KEYと設定用スクリプトが表示されるので、信じて実行します。

curl -u username https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials; chmod 0600 ~/.gem/credentials
cat ~/.gem/credentials

あとはrakeでreleaseタスクを実行すれば、公開完了です。

rake release

お疲れ様でした。

参考にしたサイト

konyu.hatenablog.com

↓パッケージ名の規約などが載っていて参考になりました。

Rubyist Magazine - Ruby 初心者の新卒エンジニアが gem パッケージ公開に至るまで