Asdf 不会根据工具版本或使用本地命令切换本地版本

问题描述

我前几天下载了 asdf,并试图将它与我从 Github 下载的 ruby​​ on rails 项目一起使用。 当我运行 asdf install 时,我得到以下响应:

firebase 9.10.0 is already installed
ruby 2.7.2 is already installed

然后我运行 rails s :

No preset version installed for command rails
Please install a version by running one of the following:

asdf install ruby 2.7.2

or add one of the following versions in your config file at 
/Users/******/Desktop/****/.tool-versions
ruby 3.0.1

该项目在 ruby​​ 2.7.2 上运行。

.tool-versions:

ruby 2.7.2
node 12.18.3

我用自制软件安装了 asdf,并在 asdf 插件中使用了 oh-my-zhs。

编辑: 运行

asdf install ruby 2.7.2

只是说

ruby 2.7.2 is already installed

解决方法

您需要重新填充 ruby​​。运行 asdf reshim ruby,然后再次尝试运行 rails s

,

我遇到了类似的问题,我刚刚重新安装了 rails。

gem install rails
,

对于诊断,请查看

的输出

哪个红宝石

红宝石 --version

在您项目的工作目录中。如果它确实向您显示 ruby​​ 版本 2.7.2,则再次从该工作目录运行“gem install rails”或(如果 gemfile.lock 存在,则为“bundle install”)。

一个常见的错误是修改shell配置文件后没有打开新的shell。如果某些程序安装在不同的路径,zsh 也需要运行“rehash”命令,但重新打开 shell 可以解决这个问题。

,

如果 Ruby 2.7.2 已经在您的 .tool-versions 文件中,您只需运行即可解决此问题

$ bundle

这将安装正确版本的 Rails gem,一切都应该会再次运行。

首先尝试查看 shim-versions 的输出,您很可能会看到 Ruby 2.7.2 在那里,但 Rails 2.7.2 不在:

$ asdf shim-versions rails
ruby 2.7.0

$ asdf shim-versions ruby
ruby 2.7.2
ruby 2.7.0