Ruby 运行时

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

函数准备

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

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

运行时 运行时 ID 堆栈 运行时基础映像
Ruby 3.4 ruby34
  • google-22(默认)
  • google-22-full
  • google-22/ruby34
  • google-22-full/ruby34
  • 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 ruby34
    

    您需要进行如下替换:

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

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

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

    控制台

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

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

    1. 在 Google Cloud 控制台中,前往 Cloud Run 页面:

      转到 Cloud Run

    2. 点击编写函数

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

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

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

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

    源代码结构

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

    指定依赖项

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

    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 参考文档