初めてgemを公開したので備忘録として.
gemを作る
bundle gem <なまえ> -t
<なまえ> に "-"(ハイフン)が入ってるとネストした構成で生成される.
プラグインなど既存のgemの拡張などは、"-"(ハイフン)で区切った名前にするとよい.
例) capistrano
に対する capistrano-ext
単純に単語を区切る目的なら、"_"(アンダースコア) を使用するとよい.
次に <なまえ>.gemspec
の以下を修正
-
spec.name
gemの名前. <なまえ> にあわせておけばOK -
spec.summary
超簡単な説明 -
spec.description
簡単な説明 -
spec.homepage
特に作ってない場合はGithubのページを指定とけばOK -
spec.add_development_dependency
開発で使うgems.必要な分だけ並べる -
spec.add_dependency
このgemを利用する際に依存しているgem. 必要な分だけ並べる.
spec.add_development_dependency
とspec.add_dependency
は Gemfile
から移動する.
代わりに、Gemfile
はこんなかんじになる.
source 'https://rubygems.org'
gemspec
肝心のコードは、lib/<なまえ>.rb
に書く.
ちなみにいくつかgemを覗いてみたところ、lib
以下にはロードパスが通るので、lib/<なまえ>.rb
には lib/<なまえ>/*.rb
を require
するだけになっているgemも多かった.
試しにローカルにインストールしてみる
$ rake build
$ rake install
$ irb -r<なまえ>
で、エラーがでなければ多分大丈夫.
参考: http://masarakki.github.io/blog/2014/02/15/how-to-create-gem/
gemを公開する
Githubの場合
ユーザ登録なりリポジトリ作ったりは省略.
公開はpushするだけでOK.ただし公開したgemsを利用する場合、Gemfile
にはリポジトリのパスを書かなければならない.
gem '<なまえ>', github: "<Githubのユーザ名>/<なまえ>"
Rubygemsの場合
認証
pushするマシンで、認証情報を最初に1回だけ取得する.
$ curl -u <RubyGemsのユーザ名> https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials; chmod 0600 ~/.gem/credentials
Enter host password for user '<RubyGemsのユーザ名>':
で、RubyGemsのパスワードを入力する.
公開する
以下のコマンドで、現在のバージョンでタグ打ってRubygemsにpushしてくれる.
$ rake release
こっちで公開しておけば、gem install <なまえ>
や、 Gemfile
に gem <なまえ>
と書くだけで利用できる.