在 Rails 中,如何通过 ruby-install 在 Ruby 的不同版本上安装多个版本的 puma-dev 运行?

In Rails, how do you have multiple versions of puma-dev running on different versions of Ruby via ruby-install?

我有许多不同的 Rails 应用程序使用 puma-dev

我已经使用 Ruby 3+ 启动了一个新的 Rails 应用程序,它在本地主机上运行良好,但是当我通过 puma-dev 访问该站点时,出现错误。这是因为我认为 puma-dev 使用了错误版本的 Ruby 来启动应用程序。

puma 开发日志显示此错误:

! Unable to load application: Bundler::RubyVersionMismatch: Your Ruby version is 2.6.6, but your Gemfile specified 3.1.2
/Users/abc/.gem/ruby/2.6.6/gems/bundler-2.2.28/lib/bundler/definition.rb:441:in `validate_ruby!': Your Ruby version is 2.6.6, but your Gemfile specified 3.1.2 (Bundler::RubyVersionMismatch)

我正在使用 ruby-installchruby 到 select 不同的红宝石。

如何让 puma-dev 使用通过 ruby-install 安装的 ruby 版本,以便我所有不同的应用程序可以使用不同版本的 Ruby?

似乎 puma-dev 并非在所有情况下都与 chruby 完全兼容。但这可以通过在 Rails 项目文件夹中创建 .pumaenv 文件来解决:

# Load chruby
source /usr/local/share/chruby/chruby.sh

# Change to your desired Ruby version
chruby ruby-3.1.2 

请根据您的 chruby.sh 文件在系统上的安装位置进行调整。

如果您想让设置与 .ruby-version 个文件兼容,您可以这样做:

source /usr/local/share/chruby/chruby.sh
chruby $(cat .ruby-version)

有关此主题的进一步讨论,请参阅此 puma-dev 问题:
https://github.com/puma/puma-dev/issues/53