Ruby Gemを作って公開するための5つの手順
本日のお裾分けシリーズ
今月からRubyメインになりました。
Ruby Gem公開をしたので手順を記事にします。
実行環境
$ ruby -v ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin15] $ gem -v 2.4.5.1 $ bundler -v Bundler version 1.10.6 $ rake -V rake, version 12.0.0
TL;DR
## Gem用プロジェクトテンプレートを作成する bundle gem your_gem_project --test cd your_gem_project/ ## プロジェクト詳細を設定する vim ./your_gem_project.gemspec ## 機能を実装する vim ./lib/your_gem_project.rb bundle install bundle exec rspec rake build ## Gitサーバーを立てる git add . git commit -m "write first function." git remote add origin https://github.com/username/your_gem_project.git git push -u origin master ## rubygemsアカウントを作成し、公開する! curl -u username https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials; chmod 0600 ~/.gem/credentials cat ~/.gem/credentials rake release
目次
- Gem用プロジェクトテンプレートを作成する
- プロジェクト詳細を設定する
- 機能を実装する
- Gitサーバーを立てる
- rubygemsアカウントを作成し、公開する!
Gem用プロジェクトテンプレートを作成する
まずはBundlerを使ってプロジェクトテンプレートを生成します。
bundle gem your_gem_project --test cd your_gem_project/
今回は、testファイルも生成したので–testオプションを利用していますが必須ではありません。
Bundler公式には全オプションとその説明が書いてあります。
リンクはBunder v1.10のもの。
CODE_OF_CONDUCT.mdを作りますか?とか
LICENSE.txtはMITで良いですか?とか聞かれた気がしますが全てyesにしました。
プロジェクト詳細を設定する
your_gem_project.gemspec
にプロジェクト詳細を書くのですが、
生成したての状態だとtodoとなっている部分があり、これを書かないとビルドで怒られるので書きましょう。
if spec.respond_to?(:metadata)
から始まる部分は、非公開にしたい場合は設定する必要があるそうです。
今回はrubygemsにて公開しようとしているので消します。
機能を実装する
./lib/your_gem_project.rb
にgemで必要な機能、./spec/your_gem_project.rb
にそのテストを書きます。
bundle install bundle exec rspec
でテストが通ることを確認しましょう。
Gitサーバーを立てる
githubかどこかにgitのリモートサーバーを立てて、pushしておきましょう。
あとで公開するときに、リモートサーバーがないと怒られます。
git add . git commit -m "write first function." git remote add origin https://github.com/username/your_gem_project.git git push -u origin master
rubygemsアカウントを作成し、公開する!
rubygemsのアカウントを作りましょう。ないと公開できません。
プロフィール編集画面の下の方に、あなたのAPI KEYと設定用スクリプトが表示されるので、信じて実行します。
curl -u username https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials; chmod 0600 ~/.gem/credentials cat ~/.gem/credentials
あとはrakeでreleaseタスクを実行すれば、公開完了です。
rake release
お疲れ様でした。
参考にしたサイト
↓パッケージ名の規約などが載っていて参考になりました。