(2015年までの)odaillyjp blog

イベント参加記録とプログラミング系の雑記

gem の雛形生成後に自動で git commit を実行する拡張 Bundler を作りました

bundler で gem の雛形を生成するときのコマンドを知っていますか?そう、bundle gem コマンドですね。
bundle gem コマンドを実行したときに、生成した gem の雛形ファイル全てを git のインデックスに登録してくれますが、commit はされていない状態ですので、手動で commit しなければいけません。私は必ず gem の雛形を生成したばかりの状態で一度 commit しておくのですが、gem の雛形を生成するたびに毎回 git commit コマンドを打つのは面倒でしたので、bundle gem コマンドにオプションを付けると自動で git commit を実行してくれる拡張 Bundler を作りました。

bundler-first_commit
http://rubygems.org/gems/bundler-first_commit
https://github.com/OdaillyJP/bundler-first_commit

インストール

gem は Rubygems.org に登録済みですので、gem コマンドを使ってインストールできます。

$ gem install bundler-first_commit

インストール後、以下のコマンドでバージョン情報が表示されれば、問題なしです。

$ bundler-first_commit -v
Bundler-FirstCommit version 1.0.1 on Bundler version 1.5.1

使い方

基本的な使い方は Bundler と同じです。ただし、bundle gem コマンドに '-c' オプションを付けることができるようになり、'-c' オプションを付けると gem の雛形を生成した後に git commit を実行してくれます。

$ bundler-first_commit gem foo -c
  create  foo/Gemfile
  create  foo/Rakefile
  create  foo/LICENSE.txt
  create  foo/README.md
  create  foo/.gitignore
  create  foo/foobar.gemspec
  create  foo/lib/foo.rb
  create  foo/lib/foo/version.rb
Initializing git repo in /Users/foo

$ cd foo
$ git log --oneline
7dc3c13 Create gem templates

コミットメッセージは必ず「Create gem templates」になります。(コミットメッセージの書き方に慣れていないので、より適切なコミットメッセージがあるかも。)

より楽に使うには

bundler-first_commit コマンドを bundle コマンドとして alias しておくと、拡張 Bundler であることをあまり意識しないで使えるようになります。

# .bashrc などに下記の alias を登録しておく
alias bundle='bundler-first_commit'

gem を作って知ったこと

gem 名のアンダースコア(_)とハイフン(-)に違いがあることを知りました。

【参考】gem名のアンスコとハイフンの違い: https://gist.github.com/sue445/8515983

ハイフンは名前空間の区切り、アンスコは単語の区切りになるのですね。今回は Bundler に frist_commit というモジュールを追加する gem でしたので、Bundler-first_commit とアンダースコアとハイフンを使い分けた名前にしました。

2014/02/02 追記

きたむー@altarf8 さんに README.md を英訳していただきました。
ありがとうございます!