- Published on
Ruby Gemの作り方・公開する方法
Ruby Gemの作り方と公開する方法を紹介します。
RubyGemを作りにあたり、以下の6ステップで作成と公開までを簡単に紹介します。
- RubyGemの作成 (テンプレートを利用)
- gemspecを編集
1
,2
で作ったものをベースにgem
を作成- rubygem.orgでのアカウントの作成
- rubygem.orgにterminalからログイン
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
をやりirb
でrequire '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)