自作のライブラリを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