在使用bundler和Heroku的项目中,我想测试ruby-3.3.0-preview1版本,我可以使bundler在本地使用预览版本,但无法将其部署到Heroku,并且Heroku文档中的说明没有'不在本地工作。
我可以安装 ruby 版本(我正在使用 rbenv)并将要与我的 .ruby-version 文件一起使用的版本设置为
3.3.0-preview1
(或者如果我愿意,我可以使用 rbenv-alias 将其称为 3.3.0插件,但这也不能解决问题)。
我可以通过在 Gemfile 中指定不同但相似的名称来使用预览版本:
ruby '3.3.0preview1'
它按预期工作,在本地,安装新版本中的所有gems,并且可以确认应用程序中的RUBY_VERSION是3.3.0。
但是,Heroku 不接受这个版本,它会引发错误:
The Ruby version you are trying to install does not exist: ruby-3.3.0.preview1
并且Heroku文档建议将3.3.0放入Gemfile中,但这实际上也不起作用,因为如果我只使用3.3.0,捆绑器不会在本地运行,它说:
Your Ruby version is 3.3.0.preview1, but your Gemfile specified 3.3.0
Obs.:我还尝试在 Gemfile 中指定 Preview1 作为补丁级别,但这也不起作用:
ruby '3.3.0', patchlevel: 'preview1'
您可能需要更改 Heroku 堆栈。
您可以通过
检查您的heroku stack
验证您使用的是最新版本(heroku-22),通常,它支持较新的 Ruby 版本,并且它表示在 Gemfile 中使用 3.3.0
3.3.0-preview1
。
如果不是
heroku-22
,您将需要设置它:
heroku stack:set heroku-22
请注意,升级到最新堆栈有其流程和一些影响。
并且
3.3.0-preview1
自5月12日开始可用