指定 Ruby 依赖项

以 Ruby 编写的 Cloud Functions 函数使用 bundler 访问依赖项。您可以在部署函数时下载依赖项,也可以将其与您的函数一起打包。

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

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

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

下面给出了一个示例 Gemfile

source "https://rubygems.org"

gem "functions_framework", "~> 0.7"
gem "google-cloud-storage", "~> 1.29"

运行以下命令安装 functions_framework gem 和其他依赖项:

bundle install

捆绑器在分析您的依赖项时会生成 Gemfile.lock,后者决定了要安装的每个 gem 的确切版本。例如,这可确保与您的函数一起部署的依赖项版本与本地测试中使用的依赖项版本相同。Gemfile.lock 的确切格式不对捆绑器公开,不应手动修改。

如果您已使用捆绑器安装依赖项并在本地运行测试,那么您可能已经有一个 Gemfile.lock 文件。如果没有,您可以运行以下命令来生成一个:

bundle lock

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

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

封装本地依赖项

您还可以将依赖项与函数一起进行打包和部署。如果依赖项不能通过 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 参考文档