Help us understand the problem. What is going on with this article?

Jewelerで作ったGemをGithubとRubygemsに登録

More than 5 years have passed since last update.

Ruby - 読みをポケベル入力数字に変換するPokebell gem - Qiitaを作った際の記録です。

Jewelerで作ったGemをGithubとRubygemsに登録 - 別館 子子子子子子(ねこのここねこ)にアップした記事の要約です。

アカウントは予め github には登録済みで、既に pokebell フォルダに、符号化できる状態の pokebell.rb を作成してある状況から開始しました。

Jeweler について

Jeweler とは、RubyGems 作成支援のツールであり RubyGems の作成を簡単にしてくれます。 下記のような機能があります。

  • パッケージのひな形の作成
  • github へのソースの登録
  • RubyGems への公開
  • 公開したパッケージの更新

Rubyist Magazine - Jeweler で作る Rails 用 RubyGems パッケージとそのテストについて

Github への登録をしてくれるのがありがたいです。

Jeweler で gem 作成開始

$ jeweler --rspec --create-repo pokebell
    create  .gitignore
    create  Rakefile
    create  Gemfile
    create  LICENSE.txt
    create  README.rdoc
    create  .document
    create  lib
    create  lib/pokebell.rb
    create  spec
    create  spec/spec_helper.rb
    create  spec/pokebell_spec.rb
    create  .rspec
Jeweler has prepared your gem in ./pokebell
Please provide your Github password to create the Github repository
Password: 

ここで Github のパスワードを入力します。

Faraday::Builder is now Faraday::RackBuilder.
Jeweler has pushed your repo to git@github.com:riocampos/pokebell.git

当然ですが lib/pokebell.rb の中身は空っぽです。ので、バックアップを取っていた内容を流し込みます。そして git commit

なお、github情報を ~/.gitconfig に未登録だったり同名フォルダが存在したりすると失敗します。それらの対応についてはJewelerで作ったGemをGithubとRubygemsに登録 - 別館 子子子子子子(ねこのここねこ)を確認してください。

バージョン設定

ひとまずバージョンを0.0.1にしておきたい。

$ rake version:write
Updated version: 0.0.0
$ rake version:bump:patch
Current version: 0.0.0
Updated version: 0.0.1

として VERSION ファイルの作成及び記載バージョンを0.0.1に変更しました。

0.0.1

git commit も為されていました。

gemspec ファイル作成

Rakefile
gem.summary = %Q{TODO: one-line summary of your gem}
gem.description = %Q{TODO: longer description of your gem}

の部分を変更しておく必要があるようです。

Rakefile
gem.summary = %Q{Japanese "Pokebell" pager message encoder}
gem.description = %Q{Japanese charactor displayed by hiragana, alphabet, or number encode to 2-digit in used "Pokebell" pager.}

に変更します。
続いて rake gemspec を実行します。

$ rake gemspec
Generated: pokebell.gemspec
pokebell.gemspec is valid.

pokebell.gemspec ファイルには

pokebell.gemspec
# Generated by jeweler
# DO NOT EDIT THIS FILE DIRECTLY
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'

とありますので、 gemspec ファイルを訂正する場合には Rakefile を直しましょう。ちなみに Rakefile の gem.summary などが TODO のままであってもそのまま gemspec ファイルが生成されます。先に直しておきましょう。

rubygems を生成

なお、gemspec ファイルを作成しなくてもrake buildは実行可能です。

$ rake build
  Successfully built RubyGem
  Name: pokebell
  Version: 0.0.1
  File: pokebell-0.0.1.gem

rubygems.org への登録

Edit Profile | RubyGems.org | your community gem host

の最下段の curl コマンドを実行し rubygems.org のパスワードを入力すると、 ~/.gem/credentials に API key を設定できます。

$ curl -u riocampos https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials; chmod 0600 ~/.gem/credentials
Enter host password for user 'riocampos':
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    56    0    56    0     0     23      0 --:--:--  0:00:02 --:--:--    23

リリース☆

rake release 一発で Github へのアップロード(git push origin master)、 gemspec ファイル作成(rake gemspec)、 rubygems 生成(rake build)、 rubygems.org への登録(gem push ./pkg/pokebell-0.0.1.gem)を行ってくれます。

$ rake release
Committing pokebell.gemspec
Pushing master to origin
Generated: pokebell.gemspec
pokebell.gemspec is valid.
  Successfully built RubyGem
  Name: pokebell
  Version: 0.0.1
  File: pokebell-0.0.1.gem
Executing "gem push ./pkg/pokebell-0.0.1.gem":
gem push ./pkg/pokebell-0.0.1.gem
Pushing gem to https://rubygems.org...
Successfully registered gem: pokebell (0.0.1)

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away