はじめに
RubyGemsを作成および公開する方法について説明します。Bundlerを使ってRubyGemsを作成する方法については以下の記事を参照してください。
rubygems.orgの登録
上記のページからrubygems.orgに登録します。後述する「RubyGemsの公開」セクションでここで登録したメールアドレスとパスワードが必要になります。
RubyGemsの作成
作業ディレクトリの作成
これからRubyGemsの作成に必要なディレクトリおよびファイルを作成していきます。これらをまとめておく作業ディレクトリを作成します。作業ディレクトリの名称はRubyGemsの名称になるので慎重に決めましょう。
rubygems.orgに同名のRubyGemsが登録されていると作成したRubyGemsを公開することができません。そのため、希望する名称がrubygems.orgで使われていないか確認しておく必要があります。RubyGemsの検索を行うには以下のコマンドを実行します。今回は以下のようにweeps
と検索し同名のRubyGemsが登録されていないことがわかったので、weeps
というRubyGemsを作成していくことにします。
# RubyGemsの検索
% gem search weeps
*** REMOTE GEMS ***
weeps
という作業ディレクトリを作成します。
% mkdir weeps
% cd weeps
gemspecファイルの作成
gemspecファイルとはRubyGemsの仕様書を記述したファイルのことで、rubygems.orgはこのファイルに記載されている情報をRubyGemsの個別ページに表示します。
% touch weeps.gemspec
% vi weeps.gemspec
作成したgemspecファイルに以下を記述します。
weeps.gemspec
Gem::Specification.new do |s|
s.name = "weeps"
s.version = "0.0.0"
s.summary = "Weeps"
s.description = "My first gem"
s.authors = ["Sakai Kotaro"]
s.email = "info@autovice.jp"
s.files = ["lib/weeps.rb"]
s.homepage = "https://rubygems.org/gems/weeps"
s.license = "MIT"
end
コードファイルの作成
コードを記述するファイルを作成します。コードファイルはRubyGemsと同名のRubyファイルを最低でも1つ用意する必要があります。RubyGemsと同名のRubyファイルは実行時にロードされるメインファイルになります。
% mkdir lib
% cd lib
% touch weeps.rb
% vi weeps.rb
作成したコードファイルに以下を記述します。
weeps.rb
class Weeps
def self.show
puts "(;_;)"
end
end
ディレクトリ構成
ここまでの作業が完了するとディレクトリ構成は以下の通りになっているはずです。
weeps
├─ weeps.gemspec # RubyGemsの仕様書ファイル
└─ lib
└─ weeps.rb # RubyGemsのコードファイル
RubyGemsのビルド
RubyGemsのビルドを行います。
% gem build weeps.gemspec
Successfully built RubyGem
Name: weeps
Version: 0.0.0
File: weeps-0.0.0.gem
weeps-0.0.0.gem
というファイルが作成されました。
weeps
├─ weeps.gemspec # RubyGemsの仕様書ファイル
├─ weeps-0.0.0.gem # RubyGemsのバイナリーファイル
└─ lib
└─ weeps.rb # RubyGemsのコードファイル
RubyGemsのインストール
作成したRubyGemsのインストールを行います。
% gem install ./weeps-0.0.0.gem
Successfully installed weeps-0.0.0
Parsing documentation for weeps-0.0.0
Done installing documentation for weeps after 0 seconds
1 gem installed
動作確認
RubyGemsをインストールしたので、動作を確認してみます。
% irb
irb(main):001:0> require "weeps"
=> true
irb(main):002:0> Weeps.show
(;_;)
=> nil
RubyGemsの公開
作成したRubyGemsをrubygems.orgに公開してみましょう。以下のコマンドを実行し、rubygems.orgにサインインします。
% gem signin
Enter your RubyGems.org credentials.
Don't have an account yet? Create one at https://rubygems.org/sign_up
Email: [Your email]
Password: [Your password]
Signed in.
サインインできたら、RubyGemsをrubygems.orgに送信します。
% gem push weeps-0.0.0.gem
Pushing gem to https://rubygems.org...
Successfully registered gem: weeps (0.0.0)
おめでとうございます。これであなたの作成したRubyGemsは全世界に公開されました。
% gem search weeps
*** REMOTE GEMS ***
weeps (0.0.0)
RubyGemsの削除
RubyGemsをリリースする準備が完了する前に公開してしまったなどの理由で削除したい場合があります。公開したRubyGemsを削除するには以下のコマンドを実行します。
% gem yank weeps -v 0.0.0
ただし、一度削除したRubyGemsのバージョンを再び公開することはできません。
% gem push weeps-0.0.0.gem
Pushing gem to https://rubygems.org...
A yanked version already exists (weeps-0.0.0).
Repushing of gem versions is not allowed. Please use a new version and retry
RubyGemsを再び公開するには、RubyGemsの名称を変更するか、バージョンを変更する必要があります。
まとめ
RubyGemsを作成して公開する方法について説明しました。rubygems.orgで「test」などと検索すると、この記事のようにとりあえず作成して公開したと思われるRubyGemsがたくさん出てきます。別に悪いことではないと思うので、RubyGemsの作成/公開を体験したい方は遠慮せずにやってしまいましょう。
本記事を参考にしていただければと思います。