自作のライブラリをGemに公開するまでに行ったこと

( diary )

自作のライブラリをGemに公開するまでに行ったこと

欲求不満の利用しているライブラリを別に切り出してGemにしてみました。
欲求不満は自分が運営している言うなればソーシャルウィッシュリストサービス
なのですが自分がよく使うAPIを何個も使って商品を登録・管理しています。

欲求不満

  • http://frustration.me

しかし、apiはというものそれぞれの仕様でインターフェースが異なるので
商品情報を管理するときに大変面倒なので自前でクラスを作成して
インターフェースを統一させてます。そのい一部分をGemで切り出してみました。

今回使うにあたって簡単インストールできるjewelerを利用してみました。

gem install jeweler

まずは、あらかじめGitHubでレポジトリを作成しておきます。

その後、インストール処理。

jeweler --rspec --create-repo api-bucket                                                                         

[~/Programming/ruby/gem_test]
        create  .gitignore
        create  Rakefile
        create  Gemfile
        create  LICENSE.txt
        create  README.rdoc
        create  .document
        create  lib
        create  lib/api-bucket.rb
        create  spec
        create  spec/spec_helper.rb
        create  spec/api-bucket_spec.rb
        create  .rspec
Jeweler has prepared your gem in ./api-bucket
Jeweler has pushed your repo to http://github.com/nakajijapan/api-bucket

bundle install

rake version:write

rake gemspec

これでGemに必要な一式が入ります。

もろもろライブラリやらテストやらを実装したら、それをbuildして 作成されたGemファイルをRubyGemsにアップロードします。

gem build api-bucket.gemspec
gem push api-bucket-0.0.0.gem

Awasame!!!

これで、自分のライブラリが公開となります!

バージョンアップには

rake version:bump:major  # Bump the major version by 1
rake version:bump:minor  # Bump the a minor version by 1
rake version:bump:patch  # Bump the patch version by 1

なるもので上げつつ、以下のコマンドリリースです。

rake release

Committing api-bucket.gemspec
Pushing master to origin
Tagging v0.1.0
Pushing v0.1.0 to origin
Generated: api-bucket.gemspec
api-bucket.gemspec is valid.
WARNING:  description and summary are identical
  Successfully built RubyGem
  Name: api-bucket
  Version: 0.1.0
  File: api-bucket-0.1.0.gem
Executing "gem push ./pkg/api-bucket-0.1.0.gem":
gem push ./pkg/api-bucket-0.1.0.gem
Pushing gem to https://rubygems.org...
Successfully registered gem: api-bucket (0.1.0)

これで、勝手にバージョンアップの手順を踏んでくれるのと、GitHub,Gemにすかさず
アップロードしてくれます。便利。

というわけで

api-bucket

  • https://rubygems.org/gems/api-bucket

なるものを公開しました。よかったら使ってみてください!

Reference

  • jeweler
    • https://github.com/technicalpickles/jeweler
  • RubyGems
    • https://rubygems.org/
    • http://help.rubygems.org/kb/gemcutter/publishing-your-own-rubygem
    • https://rubygems.org/gems/api-bucket