代码之家  ›  专栏  ›  技术社区  ›  Sam Saffron James Allen

为什么安装rvm后要花很长时间来更改目录

  •  1
  • Sam Saffron James Allen  · 技术社区  · 15 年前

    我刚安装 RVM CD命令似乎需要额外的几秒钟,为什么会发生这种情况?有什么办法可以解决这个问题吗?

    2 回复  |  直到 14 年前
        1
  •  4
  •   dennisjbell    14 年前

    这已在0.1.39和更高版本的RVM中解决。当您第一次输入项目目录树时,该行为现在仅源于.rvmrc文件。该目录树中的后续CD不源于.rvmrc文件。如果你发现自己经常出入你的项目目录树,我建议你使用多个终端:)

    这样做的一个好处是,您现在可以在.rvmrc中执行更多耗时的操作,例如确保gemest中的所有gems都是最新的,从而使您的项目保持最新状态,而不会在每次CD时花费您的时间。

    要获取最新版本的RVM,请运行: RVM更新--头部

    安装之后,所有新的shell都将具有改进的行为——对于您不想关闭的现有shell,可以运行“rvm reload”来提供新的行为。

    干杯, -丹尼斯

        2
  •  2
  •   Sam Saffron    15 年前

    这是因为它源于一个截取 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文件,并设置环境。这样就可以让dir a在ruby 1.8下运行,dir b在ruby 1.9下运行。

    如果您愿意放弃这种方便,您可以注释掉这个文件,并通过缓慢的目录切换完成。

    或者,您可以贡献一个执行一些缓存的补丁,这样做很快。