使用系统 ruby 版本而不是下载的捆绑器

bundler using system ruby version instead of downloaded

这是一个基本问题,但我一直在用头撞墙试图解决这个问题,但我被卡住了。

我正在克隆一个 rails 项目。

当我 运行 bundle install 我得到:

Your Ruby version is 2.6.8, but your Gemfile specified 2.5.5

所以我试图通过 rbenv versions 确保我使用的是正确的版本。我得到:

  system
* 2.5.5 (set by /Users/Mahmoud/dev-reps/non-docker/backend/.ruby-version)

这意味着 rbenv 使用的是正确的版本。现在我运行which bundle:

/usr/local/bin/bundle

表示bundler使用的是系统版本

至于which -a bundle给出:

/usr/local/bin/bundle
/usr/bin/bundle

另外,当我 运行 which rubywhich -a ruby 时,我得到:

/usr/bin/ruby

虽然我尝试了一些东西,但它指向了隧道尽头的光亮。当[我尝试基于这个post] this1:

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

并重新运行 捆绑安装,有效。但问题是,这种变化并不是持久的。我关闭 shell 并重试,我就在我开始的地方

我在重新散列等之后多次卸载并重新安装了捆绑器,但我仍然看到 rbenv 不受“控制”。说是用了一个版本,实际是用的是系统版本

更新

根据其中一条评论,我卸载了 rbenv 并重新下载。现在在 rbenv rehash 之后,当我输入 which ruby:

时得到以下信息
/Users/Mahmoud/.rbenv/shims/ruby

完美。 which bundle 然而给出:

/usr/local/bin/bundle

所以问题依旧。我也试过 gem install bundler 但是当我输入 bundle install 时我仍然遇到同样的问题。

我做错了什么?

您的 shell 中似乎没有设置 rbenv。您可以在 rbenv 文档 here.

中找到有关如何执行此操作的说明

好的,下班后,在此处评论和上面给出的答案的帮助下,我能够让它工作。

问题似乎是 rbenv 没有正确设置。要修复它,要么卸载并重新安装。是否通过:

  1. brew remove rbenv
  2. rm -rf ~/.rbenv
  3. ~/.zshrc
  4. 中删除了包含 rbenv 的行

这删除了 ​​rbenv。然后我重新安装使用:

  1. brew install rbenv
  2. 然后使用rbenv init初始化。这有效地修复了 rbenv 的问题。现在在重新启动终端后,每当我 运行 which ruby,我会得到:

/Users/Mahmoud/.rbenv/shims/ruby

简而言之,系统现在依赖 rbenv 进行 ruby 版本管理,而不是在系统中查找。这对于 rbenv 的工作至关重要,本质上这是它的全部“存在理由”;将管理 ruby 的工作从您的电脑上移开。

在这一步之后我运行gem install bundler。当我 运行 which bundle 执行此步骤时,它会给出:

/Users/Mahmoud/.rbenv/shims/bundle

一切就绪,工作正常