ソース見たいときのシェル関数

どうやら、いつもRailsのドキュメントを読まずにソースコードを眺めつつコードを書いているようで、Railsソースコードへの移動が面倒になっている。少し移動が便利になるようシェル関数を書いたので、張り付けておこう。

rj() {
    gemdir=${GEM_HOME:-`ruby -rrubygems -e 'puts Gem.default_dir'`}
    subdir=''

    case ${1} in
        p) gem='actionpack'
           subdir='action_pack' ;;
        v) gem='actionpack'
           subdir='action_view' ;;
        c) gem='actionpack'
           subdir='action_controller' ;;
        r) gem='activerecord' ;;
        s) gem='activesupport' ;;
        *) gem='rails' ;;
    esac

    basedir=`find "${gemdir}/gems" -maxdepth 1 -name "${gem}*" -type d | sort | tail -1`

    if [ "${subdir}" = "" ]
    then
        path="${basedir}/lib"
    else
        path="${basedir}/lib/${subdir}"
    fi
    pushd ${path}
}

こんな感じで使います。

komamitsu@ginger:~$ rj
/var/lib/gems/1.8/gems/rails-2.3.8/lib ~
komamitsu@ginger:/var/lib/gems/1.8/gems/rails-2.3.8/lib$ popd
~
komamitsu@ginger:~$ rj v
/var/lib/gems/1.8/gems/actionpack-2.3.8/lib/action_view ~
komamitsu@ginger:/var/lib/gems/1.8/gems/actionpack-2.3.8/lib/action_view$ popd
~
komamitsu@ginger:~$ rj r
/var/lib/gems/1.8/gems/activerecord-2.3.8/lib ~
komamitsu@ginger:/var/lib/gems/1.8/gems/activerecord-2.3.8/lib$ popd
~
komamitsu@ginger:~$ rj s
/var/lib/gems/1.8/gems/activesupport-2.3.8/lib ~
komamitsu@ginger:/var/lib/gems/1.8/gems/activesupport-2.3.8/lib$ popd
~
komamitsu@ginger:~$ rj c
/var/lib/gems/1.8/gems/actionpack-2.3.8/lib/action_controller ~
komamitsu@ginger:/var/lib/gems/1.8/gems/actionpack-2.3.8/lib/action_controller$