【问题标题】:RVM and Gemfile - not always loading correct ruby, only when 'cd .. & cd myproject'RVM 和 Gemfile - 并不总是加载正确的 ruby​​,只有在 'cd .. & cd myproject' 时
【发布时间】:2014-03-10 15:22:38
【问题描述】:

TL;DR:每次我打开一个新的 标签时, 都会回到默认版本,它不使用 Gemfile ruby​​ 版本

我的 Gemfile 有

source 'https://rubygems.org'
ruby '2.0.0'

我使用 rvm 1.25.14。

RVM 很聪明,可以读取 gemfile 中的 ruby​​ 版本,除了这种边缘情况

在做

# NOTE: iterm2 
$ cd myproject
$ ruby -v
> ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-darwin12.5.0]

但是 cmd+t,创建一个新标签,停留在那个目录中,

$ pwd
>../myproject
$ ruby -v
> ruby 1.9.3p392 (2013-02-22 revision 39386) [x86_64-darwin12.3.0]

ruby 1.9.3 是我的默认版本,这很好。我的 bash (或 .zshrc )中缺少什么?完成这项工作?

#FILE .zshrc
#...stuff

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting

使用cmd+d,垂直分割终端,也有同样的问题。 rvm 进入默认状态,忽略 Gemfile。感谢大家的帮助!

【问题讨论】:

  • 我遇到了同样的问题,我正在使用一个简单的解决方法:在.bashrc 的末尾添加了cd .(在您的情况下为.zshrc),现在它可以正常工作了,但我知道这不是一个真正的答案,因为它符合我的需要,所以我没有花更多时间在上面。
  • @zrl3dx 请回答:)
  • @zrl3dx 这对我不起作用。 cd . 在这里什么都不做。 cd .. 后跟 cd myproject 工作...
  • 奇怪了,以后用zsh测试一下。
  • 我认为线索是iterm2。我刚刚在别人的计算机上测试了terminal,并且(似乎)相同的设置有效。

标签: iterm2 rvm bash rvm zshrc iterm2


【解决方案1】:

我似乎对于本地开放终端 不要加载它的脚本。将代码添加到 的末尾,然后应该:

if [ -z "$MY_RUBY_HOME" ]; then
   [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
fi

【讨论】:

  • 因为夸大和虚假陈述而投反对票。如果提供的话,RVM 确实使用 Gemfile ruby​​,但我有一个边缘情况,它不起作用。
  • @oma 修复了答案
  • 这对你有用吗?当cd-ing 进入目录时,它已经对我有效,但不适用于新选项卡(没有执行cd-ing)。我看不出您的回答与问题中的.zshrc 有什么不同。
  • 您的默认 rvm ruby​​ 与您在打开新标签的项目中使用的 ruby​​ 是否不同?仅供参考,我在 Q 中添加了 iterm2zsh
  • @oma 我没有为测试项目指定默认 rvm,我只是删除了 .ruby- 文件,并在 Gemfile 中指定了 ruby​​ 版本。但无论如何,我想问题出在.zshrc 上。尝试在其中插入一条回显线,然后打开一个新终端。
【解决方案2】:

这应该与 shell 和终端无关(不幸的是,我无法在 iterm2 上测试它,因为我没有任何 Mac 机器):

cd ${PWD} 添加到您的 .zshrc 中,这将强制 RVM 加载当前 gemset。

【讨论】:

  • 我给了你赏金,即使它是一个 hack 并且它没有工作;) pushd 然后 popd 做了 cd ${PWD} 做不到的事情。请将此添加到您的答案中,我会将其标记为“正确”。
  • .zshrc 上做这件事并没有解决我,但在.zlogin 上做它确实解决了。猜猜重要的部分是它在 rvm 的采购之后。
  • renatolond,是的,这是正确的答案。
【解决方案3】:

只需在 RVM 脚本后的 .zlogin 中添加 cd .

【讨论】:

    猜你喜欢
    • 2022-01-05
    • 2023-01-19
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    • 2011-07-09
    • 2012-03-29
    • 2014-05-19
    相关资源
    最近更新 更多