RVM 和 Gemfile - 并不总是加载正确的 ruby,只有在 'cd .. & cd myproject' 时
Posted
技术标签:
【中文标题】RVM 和 Gemfile - 并不总是加载正确的 ruby,只有在 \'cd .. & cd myproject\' 时【英文标题】: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:每次我打开一个新的iterm2 标签时,rvm 都会回到默认版本,它不使用 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,并且(似乎)相同的设置有效。
【参考方案1】:
我似乎对于本地开放终端rvm 不要加载它的脚本。将代码添加到.bashrc 的末尾,然后应该:
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 中添加了 iterm2 和 zsh
@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 .
。
【讨论】:
以上是关于RVM 和 Gemfile - 并不总是加载正确的 ruby,只有在 'cd .. & cd myproject' 时的主要内容,如果未能解决你的问题,请参考以下文章
Ruby 和“您必须使用 OpenSSL 支持重新编译 Ruby 或更改 Gemfile 中的源代码”
在 mac 上从 1.1 降级到 OPENSSL 版本 1.0
为什么gem`therubyracer`默认在Gemfile中注释掉了?
Rails:Gemfile.lock 需要“找不到捆绑程序”(2.2.11)。 (Gem::GemNotFoundException)