LoginSignup
5
5

More than 5 years have passed since last update.

[小ネタ] pecoとdirenvでGemfileを高速で切り替える

Last updated at Posted at 2015-04-20

gemを作っていて複数環境でテストを実行したり、Railsのアップデート作業中で複数のGemfileがリポジトリに含まれる事がある。
そういう時にGemfileを高速で切り替えられるようにするためのpecoの設定を作ってみた。

function swgemfile() {
  local gemfile=$(find . \( -name "Gemfile*" -or -name "*.gemfile" \) -not -name "*.lock" -maxdepth 2 | peco)
  if [ -n "$gemfile" ]; then
    local gemfile_fullpath=$(echo ${gemfile} | ruby -r pathname -ne 'puts Pathname(Dir.pwd).join($_)')
    touch .envrc
    sed -i -e '/BUNDLE_GEMFILE/d' .envrc
    echo "export BUNDLE_GEMFILE=${gemfile_fullpath}" >> .envrc
    direnv allow .
    direnv reload
  else
    sed -i -e '/BUNDLE_GEMFILE/d' .envrc
    direnv allow .
    direnv reload
  fi
}
alias swg=swgemfile

BUNDLE_GEMFILEの対象をpecoで選択するのだが全体の環境変数を弄ると他のディレクトリで作業する時問題になるのでdirenvを使うようにしている。
ついでに今利用しているgemfileをプロンプトに出せるようにもしてみた。

if type ruby > /dev/null 2>&1; then
  BUNDLE_GEMFILE_PROMPT_="%{$fg_bold[blue]%}gemfile:(%{$fg[green]%}\$(echo \$BUNDLE_GEMFILE | ruby -r pathname -ne 'begin puts Pathname(\$_).relative_path_from(Pathname(Dir.pwd)); rescue; end')%{$fg_bold[blue]%})%{$reset_color%} "
fi

超読み辛いw

追記:
Macだとgnu-sed入れてgsedを使うようにしないとバックアップファイルが出来てしまうので注意。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5