2

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

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

我尝试chruby_auto在新选项卡中手动调用该函数,但这没有效果。

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

4

2 回答 2

6

其实没关系,我在我的 .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

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

于 2016-05-05T19:25:18.710 回答
0

除非我误解了您的问题,否则听起来您想要一个~/.ruby-version文件(与.ruby-version项目中的文件不同),以便您可以在打开新终端窗口时确定默认使用的 Ruby 版本(此值将然后被项目.ruby-version文件覆盖(如果存在)。例如,在 my 中~/.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只是 contains 2.3.1,不需要chruby显式调用 in ~/.bashrc。有关更多信息,请参阅README 文件的默认 Ruby 部分chruby

于 2016-05-07T03:46:03.483 回答