指定 Ruby 依赖项

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

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

部署您的函数时,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

封装本地依赖项

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