~/.zshrc
# bundle cd [gem]
_orig_bundle=$(which bundle)
function bundle() {
if [ "$1" = "cd" ]; then
local gem
if [ "$2" ]; then
gem=$2
else
gem=$($_orig_bundle list | awk '{ print $2 }' | percol)
fi
cd $($_orig_bundle show $gem)
else
$_orig_bundle $*
fi
}
使い方
% bundle cd
Gemfileがあるディレクトリで実行するとpercolが起動して、選択したgemのディレクトリにcdできる。(pecoを使ってる人は適宜置き換える)
デモ
背景
githubのリポジトリを簡単に取ってこれるghqというツールとgem-srcを組み合わせるとbundle install
時に自動的にghqしてくれて便利!というブログが少し前に話題になった。
便利だなー思って使っていたけどいくつか問題点があって
- bundleしてるバージョンじゃなくてmasterが
ghq get
される- 常に最新版を使っている訳ではない
- (見たい/パッチを当てたい)のはbundleしているバージョンであってmasterじゃない
- bundle installしてるのに、それとは別途gitないしhgのリポジトリを取ってくるのは無駄
というわけでgem-srcには退場いただいて、上記のシェル関数を導入するに至った次第。