Gemの作り方(Ruby Gem)

スポンサーリンク

Ruby で通常の gem を作る方法です。Bundler を使った Ruby Gem の作り方を解説します。Bundler を使うので、入ってなければ前もってインストールしておきます。

bundler のインストール。

— 環境 —
bundler 1.14.4
rake 12.0.0

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

Gem のテンプレートを生成

まずは、bundle gem コマンドで gem の雛形を生成します。–test オプションを付けると、spec が共に生成される。

sample-mygem とハイフン区切りの gem 名にした場合は、ハイフンが lib/sample/mygem.rb とディレクトリに分割されて lib 以下のファイルが生成されます。区切りなしや、_(アンダースコア)区切りの場合はディレクトリ分割されません。

依存する gem を gemspec ファイルに追記

gemspec ファイルは gem の仕様書となるファイルです。依存関係の仕様を明確にするために、このファイルにこれから作る gem が依存する gem を追記します。

sample-mygem.gemspec

開発環境にのみ必要な gem は add_development_dependency で追加する。依存する gem は、gemspec で解決されるので Gemfile には書かないようにしました。

続いて bundler で gem をインストール。vendor/bundle ディレクトリ以下にインストールします。

.gitignore に vendor/bundle ディレクトリを追加しておく。

.gitignore

プライベートな gem で RubyGems(rubygems.org) に公開しない場合

RugyGems に公開しない場合は、gemspec の metadata[‘allowed_push_host’] に push するサーバーを設定します。

sample-mygem.gemspec

RubyGems に公開する場合は、上記コード(if ~ else ~ end) を削除します。

gemspec の Author 情報等を編集

gemspec ファイルには、Author 情報(開発者)や gem の説明なども書きます。それらの情報を適切に編集する。最終的に sample-mygem.gemspec は以下のような内容になりました。

sample-mygem.gemspec

gemspec に TODO や FIXME などの単語が残っていると、gem 実行時にエラーとなるので修正する。GitHub に OSS として公開する場合は、homepage に GitHub のリポジトリ URL を指定すると良いです。

gem 本体の作成

続いて、gem 本体となる lib ディレクトリ以下のファイルを、Ruby コードで作成していきます。

lib/sample/mygem.rb

今回はサンプルなので、Hello Rubygem ! と挨拶を出力するだけの機能です。

実行可能なコマンドを作成

実行可能なコマンドは、bin ディレクトリ内に作って実行権を付与します。こちらもサンプルなので、hello とだけ出力するコマンドを作る例。

bin/hello

実行。

バージョン番号の指定

lib/sample/mygem/version.rb

上記ファイルに、gem の version 番号を書いてアップデートしていきます。

README.md を作成

マークダウンで README を書く。オープンソースとして、GitHub に push して公開する場合は、README.md を分かりやすく書くと良いかと。私は英語で書くようにしています。

動作確認

ここまでできたら、作成した gem を読み込んだ状態でコンソールを起動して、gem 動作の確認を行ってみましょう。

上手く動きました!

ビルドして RubyGems リポジトリに公開

RubyGems (rubygems.org) に公開する場合は、ビルドしてリリースします。まずは、ビルド。

続いて、RubyGems に公開するためのAPIキーを取得します。前もって rubygems.org のアカウントが必要です。

user_name は、RubyGems(rubygems.org) のユーザー名を指定。パスワードが求められるので入力する。

APIキーを確認。

最後に rubygems.org に公開します。

あとは、開発〜リポジトリにプッシュ(GitHub など)〜リリース(rubygems.org に公開)の繰り返しです。rubygems.org にリリース(アップデート)する際は、バージョン番号を上げないと弾かれるので、バージョン番号を適宜上げていきます。おつかれさまでした!

スポンサーリンク
私は以下の本で Ruby を覚えました。メタプログラミングRubyは入門を超える内容で難しめです。
 
スポンサーリンク

Leave Your Message!