首页 文章

rbenv没有改变ruby版本

提问于
浏览
199

我根据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 回答

  • 2

    你可以尝试使用chruby? chruby不依赖于垫片,而只是修改 PATHGEM_HOMEGEM_PATH .

  • 0

    我刚刚发现了同样的问题 . 我做的是卸载rbenv(通过自制程序)并重新安装它 . 我还补充道

    if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi
    

    当我重新安装rbenv时进入〜/ .bash_profile . 现在工作得很好 .

  • 21

    第一步是找出被调用的红宝石:
    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正常工作”;)

  • -1

    检查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 .

  • 383

    确保 .bash_profile 的最后一行是:

    export PATH="$HOME/.rbenv/bin:$PATH"
    eval "$(rbenv init -)"
    
  • 5

    当我遇到这些症状时,问题结果是安装在我试图切换到的新Ruby版本中途失败了,没有我注意到 . 修复是删除并重新安装它 .

    (这意味着尽管ruby 1.9.3出现在可用版本的rbenv列表中,但它在rbenv假设的路径上没有可执行文件 . 因为rbenv只是通过在一个位置前加上来尝试更改你的ruby版本你的路径,如果它所在的位置实际上没有任何东西,你的操作系统将很乐意继续搜索你的默认路径并找到你的系统版本,在我的情况下就像问题的1.8.7 . )

  • 73

    这可能是一个老问题,但谷歌带领我到这里,为了后人的缘故,我想我会分享 .

    在上面的许多推荐解决方案之后我的问题仍然存在 . 像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
    

    把它切换到新版本 .

  • 9

    我有同样的问题,但由Homebrew引起:

    [~]$ rbenv version
    2.3.0 (set by /Users/user/.rbenv/version)
    [~]$ ruby -v
    ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin16]
    [~]$ which ruby
    /usr/local/bin/ruby
    

    不知怎的,我也通过Homebrew安装了Ruby,而Homebrew路径在我的 $PATH 中的rbenv路径之前 . 正在运行 brew uninstall ruby 为我修好了 .

  • 3

    奇怪的是,rbenv版本没有设置.rbenv文件检查:ls -ltra - >看到写了一个rbenv

  • 1

    我通过在〜/ .bash_profile中添加以下内容来修复此问题:

    #PATH for rbenv
    export PATH="$HOME/.rbenv/shims:$PATH"
    

    这是https://github.com/sstephenson/rbenv中记录的内容 .

    据我所知,没有〜/ .rbenv / bin目录,这在@rodowi的帖子中提到过 .

  • 0

    在我的情况下,改变 ~/.zshenv 不起作用 . 我必须在 ~/.zshrc 内进行更改 .

    我刚补充说:

    # Include rbenv for ZSH
    export PATH="$HOME/.rbenv/bin:$PATH"
    eval "$(rbenv init -)"
    

    ~/.zshrc 的顶部,重新启动shell并注销 .

    检查它是否有效:

    ➜  ~ rbenv install 2.4.0
    ➜  ~ rbenv global 2.4.0
    ➜  ~ rbenv global
    2.4.0
    ➜  ~ ruby -v
    ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-darwin16]
    
  • 1

    我忘记在安装rbenv之前删除rvm . 我删除了rvm并重新安装了rbenv,但是系统仍然没有使用由rbenv指定为全局的Ruby版本 . 我试过关闭终端,但只有在我重新启动整个机器后才能工作 .

  • 3

    运行此命令

    将rbenv添加到bash,以便每次打开终端时加载它

    echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile
    source ~/.bash_profile
    

    这将解决你的问题Reference

  • 2

    至于我使用 rbenvzsh 的最简单方法是将 rbenv 添加到 .zshrc config中的插件部分 . 在我的情况下,它看起来类似于:

    # Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
    # Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
    # Example format: plugins=(rails git textmate ruby lighthouse)
    # Add wisely, as too many plugins slow down shell startup.
    plugins=(git bower rails ruby rbenv gulp npm node nvm sublime)
    

    在那之后,在 rbenv 的帮助下安装,切换,使用ruby版本时没有问题 .

    注意在进行更改后重新启动终端会话 .

  • 78

    跑:

    rbenv init
    

    运行之后,当我设置我的本地rbenv版本时:

    rbenv local 2.4.0
    

    然后我的 ruby -v 和我的 rbenv local 版本重合了 .

    注意:您可能还想退出您所在的目录,然后再回到它,我注意到这对我来说是必要的,以便让事情发挥作用 .

  • 2

    rbenv help shell

    “通过在shell中设置'RBENV_VERSION'环境变量来设置特定于shell的Ruby版本 . 此版本覆盖特定于localapplication的版本和全局版本 . 应该是与rbenv已知的Ruby版本匹配的字符串 . 特殊版本字符串'系统'将使用你的默认系统Ruby . 运行rbenv versions'获取可用Ruby版本的列表 . “

    如果正确安装rbenv,ruby -v将对应

    rbenv shell 1.9.3-p125

  • 20

    我重新安装 rbenv 之后就发生了这件事 . 显然我的主目录中有一个 .ruby-version 文件,指定一个不再存在的版本 . 删除文件后,一切正常 .

  • 4

    我遇到了同样的问题 . 通过使用“sudo”运行“rbenv global”命令来解决此问题 . 我认为这是一个许可问题 .

    更新:我终于找到了解决方案 . 我的mac上有一个相同的文件“version”,位于“/usr/local/Cellar/rbenv/0.3.0/”下 . 我认为它偶尔会被错误地创建 . 你应该删除它 .

  • 4

    用于鱼壳用户

    set --universal fish_user_paths $fish_user_paths ~/.rbenv/shims/
    

相关问题