【问题标题】:chruby not changing to the proper version of ruby according to the value in .ruby-version on new terminal tabchruby 没有根据新终端选项卡上 .ruby-version 中的值更改为正确版本的 ruby
【发布时间】:2016-05-05 19:19:22
【问题描述】:

我正在使用 source /usr/local/opt/chruby/share/chruby/auto.sh 将 ruby​​ 自动更改为 .ruby-version 中的版本,但不幸的是这只适用于 cd。

当我在我的 mac 终端中打开一个新选项卡时,它会打开到我在上一个选项卡中所在的同一目录,但自动更改不起作用。我对此的解决方案是cd ..cd 重新加入,这会触发更改。这很烦人,很明显。

我尝试在新标签中手动调用函数chruby_auto,但这没有效果。

在这种情况下,有人可以提供如何更新我的 ruby​​ 版本的解决方案吗?我更喜欢自动解决方案,但会满足于调用命令。

【问题讨论】:

    标签: ruby chruby


    【解决方案1】:

    其实没关系,我在我的 .bashrc 中按照这些调用的顺序将这追溯到一个问题

    不正确:

    source /usr/local/opt/chruby/share/chruby/chruby.sh
    source /usr/local/opt/chruby/share/chruby/auto.sh
    chruby ruby-2.3.0 
    

    事实证明,您必须在默认行之后调用自动行。请注意,默认行也必须在 chruby.sh 行之后。

    正确:

    source /usr/local/opt/chruby/share/chruby/chruby.sh
    chruby ruby-2.3.0 # default order important, if comes after auto.sh, will undo the auto change
    source /usr/local/opt/chruby/share/chruby/auto.sh
    

    所以我想把这个答案留在这里留给后代

    【讨论】:

      【解决方案2】:

      除非我误解了你的问题,听起来你想要一个~/.ruby-version 文件(不同于你项目中的.ruby-version 文件),这样你就可以确定你想在什么时候默认使用哪个版本的Ruby打开一个新的终端窗口(如果存在,该值将被项目.ruby-version 文件覆盖)。例如,在我的~/.bashrc 中,我有:

      if [[ -e /usr/local/share/chruby ]]; then
        # Load chruby
        source /usr/local/share/chruby/chruby.sh
        # Allow auto-switching of Ruby version when
        # directory has a .ruby-version file
        source /usr/local/share/chruby/auto.sh
      fi
      

      我的~/.ruby-version 只包含2.3.1,不需要在~/.bashrc 中显式调用chruby。如需更多信息,请参阅Default Ruby section of chruby's README file

      【讨论】:

      • 不,似乎有一种情况是自动切换不起作用,但实际上是这样,它只是被我的 bashrc 中的事情顺序撤消了
      猜你喜欢
      • 2019-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-24
      • 1970-01-01
      • 2012-05-14
      相关资源
      最近更新 更多