ruby Heroku环境的最小'Gemfile/Gemfile.lock'

tjvv9vkg  于 2022-11-04  发布在  Ruby
关注(0)|答案(2)|浏览(173)

我正在更新Heroku上的环境,我们使用的buildpack之一是基于Ruby的,默认情况下,new heroku-22 environment/stack中不再提供Ruby(我们的PHP应用程序也不需要Ruby)。
从文档中:
[...]最终用户应该在所讨论的构建包之前添加Ruby构建包(他们还需要确保存在最少的Gemfile/Gemfile.lock文件,以便Ruby构建包通过检测)。
然而,我不知道这些文件应该包括什么,因为我对Ruby没有任何经验。什么是一个有效的最小Gemfile集来触发Ruby在Heroku上的安装?

7d7tgy0s

7d7tgy0s1#

我建议你根本不要使用那个构建包,它太旧了,而且第三方构建包总是有点问题,即使这只是因为它们经常停止更新。
以下是它声称要做的:
这是一个Heroku buildpack,只用于出售mysql-client-core deb包中的mysql二进制文件。
如果您只需要一个mysql二进制文件,那么您可以使用the apt buildpack来安装它,而不用担心Ruby或类似的东西。
1.将其添加为您的第一个构建包:

heroku buildpacks:add --index 1 heroku-community/apt

1.在项目的根目录中创建一个Aptfile,其中列出了您希望安装的the Ubuntu packages,例如:

mysql-client-core-8.0

请注意,构建包不会解析依赖项。如果您列出的任何包都有自己的依赖项,您可能必须显式列出它们。
1.提交并重新部署。
您应该会看到列出的Ubuntu软件包在主构建包运行之前安装完毕。
在任何情况下,如果您真的想让应用程序与Ruby构建包兼容,那么您应该能够在项目的根目录中包含一个空的Gemfile
只有当应用程序的根目录中有Gemfile时,Heroku Ruby支援才会套用至应用程序。即使应用程序没有gem相依性,它也应该包含空白的Gemfile,以记录您的应用程序没有gem相依性。
不需要Gemfile.lock
请注意,您需要manually add the buildpacks you require。我相信您首先需要Ruby,然后是问题中的MySQL构建包,然后是应用程序所用的任何语言,看起来像是PHP:

heroku buildpacks:set heroku/php  # Main buildpack; we insert others before it below
heroku buildpacks:add --index 1 heroku/ruby
heroku buildpacks:add --index 2 https://github.com/thoughtbot/heroku-buildpack-mysql.git
heroku buildpacks

# => Should print the buildpacks in the expected order
wswtfjt7

wswtfjt72#

看起来一个空的Gemfile是不够的,而实际上需要一个Gemfile.lockas well
如果您的应用在根目录中有GemfileGemfile.lock文件,则构建包会将其检测为Ruby。
经过一些试验和错误,我发现以下文件似乎工作:
第一个

相关问题