GemsでRubyのライブラリを公開する方法
Gemsで公開できるライブラリを作成する
必要なライブラリをインストールする
$ sudo apt-get install rbenv bundler rake
$ sudo gem install rspec
gemspecを作る
gemするために必要なプロジェクトを作成します。
bundle gem "gem name" -t
"gem name"のフォルダができるので、このフォルダの中にプロジェクトを作ります。
lib/に"gem name".rbがありますので、そのファイルに実際に動かすライブラリを入れます。
"gem name".gemspecを編集する
"TODO: "が入っているとエラーになるので、TODOを消して正しい記述をしてください。
spec.summary = %q{"TODO:XXXX"}
spec.description = %q{"TODO:XXXX"}
spec.homepage = ""TODO:XXXX""
gemの依存関係があれば記述しておきます。
gemspec
この一行はrubygem.orgから公開する場合はコメントアウトしてください。
#spec.metadata['allowed_push_host'] = "TODO: Set to spec.add_development_dependency "bundler", "~> 1.11"
spec.add_development_dependency "rake", "~> 10.0"
spec.add_development_dependency "rspec", "~> 3.0"
# 追加する行
spec.add_dependency "google_drive", "~> 2.1"
spec.add_dependency "termcolor", "~> 1.2"
Gemfile
このようにgemspecの下に依存関係のあるgemを記述します。
source 'https://rubygems.org'
# Specify your gem's dependencies in easy-google-drive.gemspec
gemspec
gem "google_drive","2.1.3"
gem "termcolor","1.2.2"
githubにpushします。
gemのビルドを行います。
$ rake build
動作確認
作成したgemをインストールして動作確認をします。
$ sudo gem install pkg/"gem name"-"version".gem
公開しないのであれば、ここまでで作業は終了です。
Gemに公開します。
rubygem.orgにユーザ登録する
- https://rubygems.orgにアクセスしてユーザ登録をします。
- 登録をしたら"Edit Profile"をクリックします。Email Meの下にある小さいところです。
- profileの一番下にcurlの情報があるので、それをconsole画面に貼り付けて認証を行います。
$ curl -u NaotakaSaito https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials; chmod 0600 ~/.gem/credentials
Enter host password for user 'NaotakaSaito':
### パスワードを入力してください###
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 56 0 56 0 0 76 0 --:--:-- --:--:-- --:--:-- 76
gemを公開する
(2017年5月17日 公開するためのコマンドを変更しました)
$ rake release
(おまけ)
新たな端末からリリースを行うとき、rake releaseでエラーが発生します。
その時は、まずgem pushをしてください。
メールとパスワードを入力するとエラーで終了しますが、問題ありません。
$ gem push
Don't have an account yet? Create one at https://rubygems.org/sign_up
Email:
Password:
Singed in.
Error: While executing gem ... (Gem:: CommandLineError)
Please specify a gem name on the command line (e.g. gem build GEMNAME)
Singed in.がでたらサーバーにログインできたということなので、最後に
$ rake release
をしたら完了です。
sugo gem install "gem name"
でインストールして正しいバージョンがインストールできるか確認をしましょう。