Rubyでgemを作って公開するまで
- 0. 準備
- 1. ヒナ形の作成
- 2. 作成されたファイルの確認
- 3. test_gem.gemspecの修正
- 4. Gemの実装
- 5. 実行してみよう
- 6. RSpecを書こう
- 7. 実行コマンドを追加
- 8. Gemをパッケージ化する。
- 9. 公開
0. 準備
まずは準備のためにgemのアップデートとbundlerのアップデートを行います。
# gem自信のアップデート |
1. ヒナ形の作成
今回はtest_gemという名前のGemを制作していきます。
※実際にRubyGemsで公開する場合はまだ存在していないGem名にしないといけません。
# test_gemのひな形を作成(Rspec付き) |
2. 作成されたファイルの確認
今回作成されたファイルの簡単な説明。
bundle gem test_gem -t create test_gem/Gemfile create test_gem/Rakefile create test_gem/LICENSE.txt create test_gem/README.md => このgemの説明や使い方を記述 create test_gem/.gitignore create test_gem/test_gem.gemspec => このgemの説明や依存関係などを記述 create test_gem/lib/test_gem.rb => プログラムを記述 create test_gem/lib/test_gem/version.rb => このgemのバージョン情報を記述 create test_gem/.rspec create test_gem/spec/spec_helper.rb create test_gem/spec/test_gem_spec.rb create test_gem/.travis.yml => travisを使う際の設定を記述
create test_gem/exe/test_gem => 実行コマンドを追加する際に記述
3. test_gem.gemspecの修正
test_gem.gemspecの中身は以下のようにになっています。
# coding: utf-8 |
最低限修正が必要な部分を抜き出すと次のようになります。
# このgemの説明をダブルクオートで囲って書き直す spec.summary = "Make gem for summary." spec.description = "Make gem for description."
# このgemのHomepageを書く(GitHubのURLを入れてください) spec.homepage = "https://github.com/kubota-ryotaro/"
# 依存するgemが存在する場合のみ、次のように指定 spec.add_dependency 'xxxx', '~>x.x' # 開発時だけに必要な依存gemが存在する場合のみ、次のように指定 spec.add_development_dependency 'yyyy', '~>y.y'
4. Gemの実装
今回はテスト的にHello World!
と出力するようにします。lib/test_gem.rb
を開いて次のように変更します。
require 'test_gem/version' |
5. 実行してみよう
では先ほど作成したgemを実行してみます
# gem のインストール |
ということで無事実行できました!
6. RSpecを書こう
先ほどのTestGem.greet
のテストをRSepcで書いていきます。spec/test_gem_spec.rb
を次のように書き換えます。
require 'spec_helper' |
7. 実行コマンドを追加
コンソール上でtest_gem
というコマンドを使うとgemの内容を実行できるようにしたいので、exe/test_gem
に次を書いていきます。
#!/usr/bin/env ruby |
8. Gemをパッケージ化する。
次にGemをパッケージ化します。コマンドとしては、gem build test.gemspec
です。
gem build test_gem.gemspec |
9. 公開
GitHubと連携して管理するようなので以下のことは前提となります
・GitHubアカウントを持っていること
・GitHub用にSSHキーの設定を行う:GitHubへssh接続する
①rubygems.orgのアカウントを取得
作ったgemをリリースするまで
1.「sign up」からアカウントを作成
2. アカウント作成後、Edit profile(https://rubygems.org/profile/edit) に移動
3. APIアクセス用の鍵を作成(以下のコマンドが用意されている)
②GitHub上のリモートリポジトリの設定
現在の作業用ディレクトリをリモートリポジトリに反映させます
Githubにgem名と同じ名前の新規リポジトリを作成する
③リリース
あとは、releaseするだけ。
これでできたはず!