我根据github方向安装了rbenv . 我正在运行OSX,但我在Ubuntu 12.04 VM上尝试了这个并得到了相同的结果 . 当我尝试更改ruby版本时,以下是我在终端中获得的内容:
rbenv versions
* 1.9.3-p0 (set by /Users/user/.rbenv/version)
1.9.3-p125
rbenv global
1.9.3-p0
rbenv rehash
ruby -v
ruby 1.8.7 (2011-12-28 patchlevel 357) [universal-darwin11.0]
which ruby
/usr/bin/ruby
任何人都有任何想法为什么rbenv没有像它认为的那样切换ruby版本?此外,本地目录中没有.rbenv文件会导致ruby版本默认为1.8.7
rbenv local
rbenv: no local version configured for this directory
19 回答
你可以尝试使用chruby? chruby不依赖于垫片,而只是修改
PATH
,GEM_HOME
,GEM_PATH
.我刚刚发现了同样的问题 . 我做的是卸载rbenv(通过自制程序)并重新安装它 . 我还补充道
当我重新安装rbenv时进入〜/ .bash_profile . 现在工作得很好 .
第一步是找出被调用的红宝石:
which ruby
你的系统说:
/usr/bin/ruby
这不是rbenv使用的垫片,它(在MacOS上)应该是这样的:
/Users/<username>/.rbenv/shims/ruby
垫片实际上是一个脚本,其作用类似于重定向到您设置的ruby版本 .
rbenv global 1.9.3 rbenv local --unset rbenv shell --unset
我建议您在解决问题时取消设置特定于项目的"local"版本,以及特定于shell的"shell"版本,并使用"global"版本设置进行测试,该设置在〜/ .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将使用硬编码路径来访问错误的ruby,其他几个东西将在错误的位置,所以只需再次安装gem .
P. S.如果您的MacOS不服从您(*如上所述),那么您可能必须找到另一种方法来修改您的路径,但这不太可能是一个问题因为“Macs正常工作”;)
检查PATH是否包含$ HOME / .rbenv / shims和$ HOME / .rbenv / bin
如果使用bash,还要检查〜/ .bash_profile中是否包含以下内容;如果使用zsh,请检查〜/ .zshenv
注意:确保它是〜/ .bash_profile中的最后一个设置 . 我遇到了一个问题,我安装了一个程序来更新我的.bash_profile并重置PATH .
确保
.bash_profile
的最后一行是:当我遇到这些症状时,问题结果是安装在我试图切换到的新Ruby版本中途失败了,没有我注意到 . 修复是删除并重新安装它 .
(这意味着尽管ruby 1.9.3出现在可用版本的rbenv列表中,但它在rbenv假设的路径上没有可执行文件 . 因为rbenv只是通过在一个位置前加上来尝试更改你的ruby版本你的路径,如果它所在的位置实际上没有任何东西,你的操作系统将很乐意继续搜索你的默认路径并找到你的系统版本,在我的情况下就像问题的1.8.7 . )
这可能是一个老问题,但谷歌带领我到这里,为了后人的缘故,我想我会分享 .
在上面的许多推荐解决方案之后我的问题仍然存在 . 像OP一样,我安装了rbenv然后安装了ruby版本,但我的笔记本电脑默认为系统 . 我忽略的是当我跑步时:
IOW,它仍然默认为系统 . 快点
把它切换到新版本 .
我有同样的问题,但由Homebrew引起:
不知怎的,我也通过Homebrew安装了Ruby,而Homebrew路径在我的
$PATH
中的rbenv路径之前 . 正在运行brew uninstall ruby
为我修好了 .奇怪的是,rbenv版本没有设置.rbenv文件检查:ls -ltra - >看到写了一个rbenv
我通过在〜/ .bash_profile中添加以下内容来修复此问题:
这是https://github.com/sstephenson/rbenv中记录的内容 .
据我所知,没有〜/ .rbenv / bin目录,这在@rodowi的帖子中提到过 .
在我的情况下,改变
~/.zshenv
不起作用 . 我必须在~/.zshrc
内进行更改 .我刚补充说:
在
~/.zshrc
的顶部,重新启动shell并注销 .检查它是否有效:
我忘记在安装rbenv之前删除rvm . 我删除了rvm并重新安装了rbenv,但是系统仍然没有使用由rbenv指定为全局的Ruby版本 . 我试过关闭终端,但只有在我重新启动整个机器后才能工作 .
运行此命令
将rbenv添加到bash,以便每次打开终端时加载它
这将解决你的问题Reference
至于我使用
rbenv
和zsh
的最简单方法是将rbenv
添加到.zshrc
config中的插件部分 . 在我的情况下,它看起来类似于:在那之后,在
rbenv
的帮助下安装,切换,使用ruby版本时没有问题 .注意在进行更改后重新启动终端会话 .
跑:
运行之后,当我设置我的本地rbenv版本时:
然后我的
ruby -v
和我的rbenv local
版本重合了 .注意:您可能还想退出您所在的目录,然后再回到它,我注意到这对我来说是必要的,以便让事情发挥作用 .
rbenv help shell
“通过在shell中设置'RBENV_VERSION'环境变量来设置特定于shell的Ruby版本 . 此版本覆盖特定于localapplication的版本和全局版本 . 应该是与rbenv已知的Ruby版本匹配的字符串 . 特殊版本字符串'系统'将使用你的默认系统Ruby . 运行rbenv versions'获取可用Ruby版本的列表 . “
如果正确安装rbenv,ruby -v将对应
rbenv shell 1.9.3-p125
我重新安装
rbenv
之后就发生了这件事 . 显然我的主目录中有一个.ruby-version
文件,指定一个不再存在的版本 . 删除文件后,一切正常 .我遇到了同样的问题 . 通过使用“sudo”运行“rbenv global”命令来解决此问题 . 我认为这是一个许可问题 .
更新:我终于找到了解决方案 . 我的mac上有一个相同的文件“version”,位于“/usr/local/Cellar/rbenv/0.3.0/”下 . 我认为它偶尔会被错误地创建 . 你应该删除它 .
用于鱼壳用户