Published on

Ruby Gemの作り方・公開する方法

Authors
  • avatar
    Name
    ssu
    Twitter

Ruby Gemの作り方と公開する方法を紹介します。

RubyGemを作りにあたり、以下の6ステップで作成と公開までを簡単に紹介します。

  1. RubyGemの作成 (テンプレートを利用)
  2. gemspecを編集
  3. 1, 2で作ったものをベースにgemを作成
  4. rubygem.orgでのアカウントの作成
  5. rubygem.orgにterminalからログイン
  6. 2で作ったアカウントをベースにrubygem.orgに公開

1. RubyGemの作成 (テンプレートを利用)

rubyでgemを作る際や、何らかのライブラリを作るなら

bundle gem [プロジェクト名]

とやります。[プロジェクト名]は自分が作りたいプロジェクトの名前を入れてください。 例えば、プロジェクト名がnanikaなら

bundle gem nanika

そうすると、次のようなディレクトとファイル構成が出来上がります。 ここのlibの部分を自分好みに変更していけば、ライブラリがいい感じに出来上がります。

. ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── Gemfile ├── LICENSE.txt ├── README.md ├── Rakefile ├── bin │   ├── console │   └── setup ├── lib │   ├── nanika │   │   └── version.rb │   └── nanika.rb ├── nanika.gemspec └── spec ├── nanika_spec.rb └── spec_helper.rb

参考: How to create a Ruby gem with Bundler

2. gemspecを編集

nanika.gemspec の中に書きようのうな項目ができるので、ここにアップロード先のURLを書きます。

spec.homepage = "TODO: Put your gem's website or public repo URL here."

まず、自分が作りたいgemの名前が存在していないかを確認します。 下記のようにlist -r nanikaとやるとnanikaというgemは存在していないことがわかります。

$ gem list -r nanika *** REMOTE GEMS ***

存在していないことがわかると、その名前をもとにURLを決めてあげます。

spec.homepage = 'https://rubygems.org/gems/nanika'

そして、下記のコードはprivateなgemをホストする際に使うので、消す、あるいはコメントアウトします。

spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"

3. gemの作成とテスト

次に、下記のコマンドで実際にgemを作ります。

$ gem build nanika.gemspec Successfully built RubyGem Name: nanika Version: 0.0.0 File: nanika-0.0.0.gem

作ったら、nanika-0.0.0.gemのようなファイルができていて、これがgemファイルになります。 続いて、

gem install ./nanika-0.0.0.gem

をやりirbrequire 'nanika'のようにして意図通り動くかをテストします。 動いたら準備は完了で後はpushするだけになります。

4. rubygem.orgでのアカウントの作成

次に、公開先のrubygem.orgでアカウントを作っておきます。 下記からアカウントを作ります。 名前とパスワードは後で使うので覚えておきます https://rubygems.org/sign_up

5. temrinalでのログインとgemの作成

次に、下記のユーザの名前を先程作ったアカウントのユーザ名に置き換えて、 shellを実行します。そうするとパスワードを聞かれるので、答えて上げます。 そうするとtemrinalでログインが完了し、次回以降は明示的にログインしなくても良くなります。

curl -u ユーザの名前 https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials; chmod 0600 ~/.gem/credentials

6. Rubygem.orgに公開

最後に、作成したgemをrubygem.orgにpushして終わりになります。

$ gem push nanika-0.0.0.gem Pushing gem to RubyGems.org... Successfully registered gem: nanika (0.0.0)

のように出たらこれで終わりです。 その後、下記のコマンドを使い実際に存在しているかを確認してみましょう。

gem list -r nanika *** REMOTE GEMS *** nanika (0.0.0)

参考: Make your own gem - RubyGems Guides