为了账号安全,请及时绑定邮箱和手机立即绑定

rbenv不更改Ruby版本

rbenv不更改Ruby版本

智慧大石 2019-10-23 14:45:36
我根据github的指示安装了rbenv。我正在运行OSX,但是我已经在Ubuntu 12.04 VM上进行了尝试,并得到了相同的结果。以下是我尝试更改红宝石版本时在终端中得到的内容:rbenv versions* 1.9.3-p0 (set by /Users/user/.rbenv/version)1.9.3-p125rbenv global1.9.3-p0rbenv rehashruby -vruby 1.8.7 (2011-12-28 patchlevel 357) [universal-darwin11.0]which ruby/usr/bin/ruby关于rbenv为什么不像它认为的那样切换ruby版本,有人有任何想法吗?此外,本地目录中也没有.rbenv文件,这将导致ruby版本默认为1.8.7。rbenv localrbenv: no local version configured for this directory
查看完整描述

3 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

检查PATH是否包含$ HOME / .rbenv / shims和$ HOME / .rbenv / bin


$ env | grep PATH

如果使用bash,也请检查〜/ .bash_profile中是否包含以下内容;如果使用zsh,请检查〜/ .zshenv中是否包含以下内容


export PATH="$HOME/.rbenv/bin:$PATH"

eval "$(rbenv init -)"

注意:确保它是〜/ .bash_profile中的最后一个设置。我遇到了一个问题,我安装了一个更新.bash_profile并重置PATH的程序。


最后,确保你的$HOME文件夹没有.ruby-version,你可以通过意外,如果你已经做到已创建的文件$ rbenv local <ruby-version>你的$HOME文件夹中。执行$ rbenv global <ruby-version>' modifies the$ HOME / .rbenv / version file, and the existence of a.ruby-version file in the$ HOME folder would override the version set by$ HOME / .rbenv / version`。


从文档:


选择Ruby版本执行填充程序时,rbenv通过从以下来源按以下顺序读取来确定要使用的Ruby版本:


RBENV_VERSION环境变量(如果已指定)。您可以使用rbenv shell命令在当前的Shell会话中设置此环境变量。


通过搜索正在执行的脚本的目录及其每个父目录,直至到达文件系统的根目录,找到了第一个.ruby-version文件。


通过搜索当前工作目录及其每个父目录直至到达文件系统的根目录,找到了第一个.ruby-version文件。您可以使用rbenv local命令在当前工作目录中修改.ruby-version文件。


全局〜/ .rbenv / version文件。您可以使用rbenv global命令修改此文件。如果不存在全局版本文件,则rbenv假定您要使用“系统” Ruby —即,如果rbenv不在您的路径中,则将运行任何版本。


查看完整回答
反对 回复 2019-10-23
?
慕森王

TA贡献1777条经验 获得超3个赞

这可能是一个古老的问题,但Google带领我来到这里,出于后人的考虑,我认为我会分享。


经过上述许多推荐的解决方案后,我的问题仍然存在。像OP一样,我安装了rbenv,然后安装了ruby版本,但是我的笔记本电脑默认使用系统。我忽略了的是当我跑步时:


[~/.rbenv] $ rbenv versions

* system (set by /Users/alphadogg/.rbenv/version)

  2.0.0-p247

IOW,它仍然默认为系统。快速


[~/.rbenv] $ rbenv local 2.0.0-p247

将其切换到新版本。


查看完整回答
反对 回复 2019-10-23
?
白衣非少年

TA贡献1155条经验 获得超0个赞

第一步是找出正在调用的红宝石:

which ruby


您的系统说:

/usr/bin/ruby


这不是rbenv使用的填充程序,(在MacOS上)它应该看起来像:

/Users/<username>/.rbenv/shims/ruby


填充程序实际上是一个脚本,其作用类似于重定向到您设置的红宝石版本。


rbenv global 1.9.3

 rbenv local --unset

 rbenv shell --unset


我建议您为排除故障而取消设置项目特定的“本地”版本和外壳特定的“ shell”版本,并仅使用“全局”版本设置进行测试,该设置由〜/ .rbenv / verion中的纯文本文件确定。在您的情况下,将只是版本号“ 1.9.3”。您可以在项目文件夹(而非主文件夹)的根目录中执行“ ls -laG”,以确保那里不再有“ .ruby-version”文件。


您可以使用“ rbenv版本”来标识设置为使用哪个版本的rbenv(以及设置该版本的文件的位置和名称)。


rbenv versions


无关紧要:直到正确设置路径。


使用它来确保您的* MacOS将服从您:

eval "$(rbenv init -)"


其次是:

which ruby


确保它看起来像:/Users//.rbenv/shims/ruby


然后将该行添加到您的配置文件中,以便在您每次打开新的终端窗口时运行该行:

 ~/.bash_profile

eval "$(rbenv init -)"


还有其他修改路径的方法,可以随意替换其中任何一种,而无需运行rbenv init。


注意:使用以下方法重新安装Rails:

gem install rails


如果您试图在Ruby on Rails上运行,则需要先使所有这些正常运行,然后再安装rails gem。先前安装的Rails将使用硬编码的路径指向错误的红宝石,而其他几处内容将位于错误的位置,因此只需重新安装gem。


PS:如果您的MacOS不服从您(如上所述),那么您可能不得不寻找另一种修改路径的方法,但这不太可能成为问题,因为“ Macs可以工作”;)


查看完整回答
反对 回复 2019-10-23
  • 3 回答
  • 0 关注
  • 917 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信