Ruby 运行时

Cloud Run functions 函数在由操作系统版本、插件软件包、语言支持以及支持和调用函数的 Ruby Functions 框架库组成的环境中运行。此环境由语言版本进行标识,称为运行时 ID。

函数准备

您可以直接在 Google Cloud 控制台中准备函数,也可以在本地机器上编写函数并上传该函数。如需准备本地机器以用于 Ruby 开发,请参阅设置 Ruby 开发环境

支持的 Ruby 运行时和基础映像

运行时 运行时 ID 堆栈 运行时基础映像
Ruby 3.3 ruby33
  • google-22(默认)
  • google-22-full
  • google-22/ruby33
  • google-22-full/ruby33
  • Ruby 3.2 ruby32
  • google-22(默认)
  • google-22-full
  • google-22/ruby32
  • google-22-full/ruby32
  • Ruby 3.0 ruby30 google-18-full google-18-full/ruby30
    Ruby 2.7 ruby27 google-18-full google-18-full/ruby27
    Ruby 2.6 ruby26 google-18-full google-18-full/ruby26

    选择运行时

    您可以在部署期间为您的函数选择一种受支持的 Ruby 运行时。

    您可以使用 Google Cloud 控制台或 gcloud CLI 选择运行时版本。点击相应标签页即可获取有关所选工具的使用说明:

    gcloud

    在部署函数时,使用 --base-image 标志为函数指定 Ruby 基础映像。例如:

    gcloud run deploy FUNCTION \
        --source . \
        --function FUNCTION_ENTRYPOINT \
        --base-image ruby33
    

    您需要进行如下替换:

    • FUNCTION 替换为您要部署的函数的名称。您可以完全省略此参数,但如果省略它,系统将提示您输入名称。

    • FUNCTION_ENTRYPOINT 替换为源代码中函数的入口点。这是 Cloud Run 在您的函数运行时执行的代码。此标志的值必须是源代码中存在的函数名称或完全限定类名称。

    如需详细了解如何使用 gcloud CLI 部署函数,请参阅在 Cloud Run 中部署函数

    控制台

    您可以在 Google Cloud 控制台中创建或更新 Cloud Run 函数时选择运行时版本。如需详细了解如何部署函数,请参阅在 Cloud Run 中部署函数

    如需在 Google Cloud 控制台中创建函数时选择运行时,请按以下步骤操作:

    1. 在 Google Cloud 控制台中,转到 Cloud Run 页面。

      转到 Cloud Run

    2. 点击编写函数

    3. 运行时列表中,选择一个 Ruby 运行时版本。

    4. 点击创建,然后等待 Cloud Run 使用占位符修订版创建服务。

    5. 控制台会将您重定向到来源标签页,您可以在其中查看函数的源代码。点击保存并重新部署

    如需详细了解如何在函数部署后更新运行时版本,请参阅重新部署新源代码

    源代码结构

    为了让 Cloud Run functions 找到函数的定义,源代码必须遵循特定结构。如需了解详情,请参阅编写 Cloud Run 函数

    指定依赖项

    以 Ruby 编写的 Cloud Run 函数使用 bundler 访问依赖项。

    Cloud Functions 框架是所有函数都必需的依赖项。虽然 Cloud Run functions 会在创建函数时代表您安装该框架,但为清楚起见,我们建议您将其添加为显式依赖项。

    如果函数依赖于专用依赖项,我们建议您将 functions-framework 镜像到您的私有注册表。将镜像的 functions-framework 作为依赖项添加到函数中,以避免从公共互联网安装软件包。

    每个函数必须提供一个 Gemfile,用于指定 functions_framework gem 以及函数所需的任何其他 gem。Gemfile 必须与包含函数代码的 app.rb 文件位于同一目录中。此外,您的函数必须提供锁定文件,以指定所有传递依赖项及其确切版本。此文件 Gemfile.lockGemfile 也位于同一目录中。

    部署您的函数时,Cloud Run 会使用 bundler 下载并安装 GemfileGemfile.lock 中声明的依赖项。

    Gemfile 会列出函数所需的软件包以及所有可选版本限制条件。如需了解详情,请参阅 Gemfile 参考文档

    下面给出了一个示例 Gemfile

    source "https://rubygems.org"
    
    gem "functions_framework", "~> 0.7"
    gem "google-cloud-storage", "~> 1.29"
    

    封装本地依赖项

    您还可以将依赖项与函数一起进行打包和部署。如果依赖项不能使用 rubygems 软件包管理器使用,则此方法非常有用。

    如需在本地打包 gem,请将其加入函数目录结构的目录中,并在依赖项的 Gemfile 条目中提供路径。gem 目录必须包含有效的 gemspec 文件,并且必须位于函数的目录层次结构中,以便其代码与函数一起部署。例如,您可以使用如下所示的目录结构:

    myfunction/
    ├── Gemfile
    ├── Gemfile.lock
    ├── app.rb
    └── my_private_gem/
        ├── lib/
        |   └── my_private_gem.rb
        └── my_private_gem.gemspec
    

    Gemfile 条目可能如下所示:

    source "https://rubygems.org"
    
    gem "functions_framework", "~> 0.7"
    gem "my_private_gem", path: "./my_private_gem"
    

    如需详细了解如何引用本地 gem 路径,请参阅 Gemfile 参考文档