Memento memo.

Today I Learned.

gemを作ってrubygems.orgでリリースする

作ったもの

github.com

slash-force というかっこいい名前のgemを書きました。

Railsで特定のURLへとアクセスしたときに末尾にスラッシュを付けて強制的にリダイレクトさせるだけのプラグインです。

こんな感じでgemをリリースできました。

slash_force | RubyGems.org | your community gem host

gemの作り方

Gemの作り方まとめ 普通のgem編 - masarakki's blog を参考に。

  • bundle gem xxxxx -t でプロジェクトの雛形を作成
  • 適当に実装
  • gemspecのTODO部分を埋める

くらいです。

gemのリリース

curl -u shotat https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials; chmod 0600 ~/.gem/credentials
  • bundle exec rake release を実行。

以上の手順でリリースが完了します。当初の想定の2兆倍くらい簡単なプロセスでした。

gem化のメリデメ

汎用的な機能のgem化のメリデメについて(私見)

メリット

  • プロダクトコード内の libconcern の肥大化を防げる
  • 車輪の再発明を防げる(gem自体が再発明でない場合に限る)
  • UTをプロダクトコードと完全に分離できる
  • 見知らぬ強い人がenhance, bug fixしてくれる可能性がある
  • 楽しい

デメリット

  • インタフェースの変更に大いなる責任が伴う
  • やりすぎるとプロダクトコード側が苦しくなる(謎gemに大量に依存する状況になるとつらい)