指定 Ruby 依赖项

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

每个函数都必须提供一个 Gemfile,用于指定 functions_framework gem,以及函数所需的任何其他 gem。Gemfile 必须与包含函数代码的 app.rb 文件位于同一目录中。此外,您的函数必须提供一个用于指定所有传递性依赖项及其确切版本的 Lockfile。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

封装本地依赖项

您还可以将依赖项与您的函数一起打包和部署。如果无法通过 rubyems 软件包管理器获取依赖项,则此方法非常有用。

如需在本地将 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 参考文档