RVMをインストールしたところ、cdコマンドに数秒余分にかかっているようですが、なぜこれが発生するのですか?これを修正する方法はありますか?
2 に答える
これは、RVMの0.1.39以降のバージョンで解決されています。この動作は、プロジェクトディレクトリツリーに初めて入るときにのみ.rvmrcファイルをソースするようになりました。そのディレクトリツリー内の後続のCDは、.rvmrcファイルをソースしません。プロジェクトのディレクトリツリーに頻繁に出入りする場合は、複数の端末を使用することをお勧めします:)
これの副次的な利点の1つは、gemset内のすべてのgemが最新であることを確認するなど、より時間のかかるアクションを.rvmrcに配置して、cdするたびに時間を費やすことなくプロジェクトを最新の状態に保つことができることです。
rvmの最新バージョンを取得するには、次のコマンドを実行します。rvm update --head
これがインストールされると、すべての新しいシェルの動作が改善されます。閉じたくない既存のシェルの場合は、「rvmreload」を実行して新しい動作を提供できます。
乾杯、-デニス
これは、操作をインターセプトするファイルをソースするために発生しますcd
。
prompt:$ cat ~/.rvm/scripts/cd
#!/usr/bin/env bash
# Source a .rvmrc file in a directory after changing to it, if it exists.
cd() {
builtin cd "$@"
if [[ "$rvm_project_rvmrc" != 0 ]] ; then
local cwd ; cwd=$(pwd)
while : ; do
if [[ -z "$cwd" ]] || [[ "$HOME" = "$cwd" ]] || [[ "/" = "$cwd" ]] ; then
if [[ "$rvm_project_rvmrc_default" != 0 ]] ; then
rvm default 1>/dev/null 2>&1
fi
break
else
if [[ -f "$cwd/.rvmrc" ]] ; then
source "$cwd/.rvmrc"
break
else
cwd=$(dirname "$cwd")
fi
fi
done
fi
}
このファイルは、変更先のディレクトリで.rvmrcファイルをチェックし、環境をセットアップします。そうすれば、dirAをruby1.8で実行し、dirBをruby1.9で実行することができます。
この便利さをなくすことができれば、このファイルをコメントアウトして、ディレクトリの切り替えを遅くすることができます。
または、キャッシュを実行するパッチを提供して、これを高速化することもできます。