我刚刚使用rbenv install 3.0.4安装了Ruby 3.0.4,这很有效,但rbenv仍然说:

$ rbenv versions
rbenv: version `3.0' is not installed (set by /home/dombek/code/.ruby-version)
  system
  3.0.4

当请求3.0时,它不应该找到3.0.4吗?我怎么才能解决这个问题呢?

推荐答案

当请求3.0时,它不应该找到3.0.4吗?

不是的.这是意料之中的行为.Rbenv希望安装并设置使用.ruby-version文件中指定的确切版本.

我怎么才能解决这个问题呢?

这取决于你所说的修复是什么意思.这里最明显的答案就是指定正确的版本:

echo '3.0.4' > /home/dombek/code/.ruby-version

或者,可以使用rbenv全局或本地设置3.0.4:

rbenv global 3.0.4
# or
rbenv local 3.0.4

更改版本后,应重新散列rbenv以应用更改:

rbenv rehash

最后,我不确定这有多实用,但理论上你可以写一个bash脚本,让你指定一个ruby版本,比如"3.0".类似于:

set_nearest_rbenv_version() {
  desired_version=$1.*
  nearest_version=$(rbenv versions --bare | grep -E "^$desired_version" | tail -1)
  if [ -n "$nearest_version" ]; then
    rbenv global $nearest_version
    echo "Set to nearest version: $nearest_version"
  else
    echo "No matching versions found."
  fi
}

set_nearest_rbenv_version 3.0

^未经测试.

Ruby相关问答推荐

Ruby:对于不存在的键,使用缺省值Hash在Hash中存储Hash

Ruby将字符串中的反斜杠替换为双反斜杠

Ruby:如何在 vanilla ruby​​ 中使用有效支持日期?

如何在加载文件时禁用重新定义常量的警告

冒号:和粗箭头=>有什么区别

为什么在 Ruby 中将 0 视为 True?

退出(exit)和中止(abort)有什么区别?

Ruby 中的 :+ 和 &:+ 是什么?

在 RSpec-2.11 中使用隐含的 `subject` 和 `expect`

我如何 expect期望在 RSpec 中引发异常的东西?

在 Ruby 中创建数字、字符串、数组或哈希的 md5 哈希

有没有办法在 RSpec 中取消存根?

include_examples和it_behaves_like有什么区别?

为什么 Ruby 无法验证 SSL 证书?

测试变量是否等于两个值之一

Ruby 将 CSV 文件读取为 UTF-8 和/或将 ASCII-8Bit 编码转换为 UTF-8

Ruby 哈希白名单过滤器

类变量上的 attr_accessor

如何在ruby脚本中隐藏终端的密码输入

Docker for Mac - mkmf.rb 找不到 ruby​​ 的头文件