在 Ruby 中指定依附元件

以 Ruby 編寫的 Cloud Run 函式會使用 bundler 存取依附元件。您可以在部署函式時下載依附元件,或在本機與函式一起封裝。

每個函式都必須提供 Gemfile,指定 functions_framework 寶石,以及函式所需的任何其他寶石。Gemfile 必須與包含函式程式碼的 app.rb 檔案位於同一目錄。此外,您的函式必須提供鎖定檔案,指定所有傳遞依附元件及其確切版本。這個檔案 Gemfile.lock 也位於與 Gemfile 相同的目錄中。

部署函式時,Cloud Run 函式會使用 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

當 bundler 分析依附元件並凍結要安裝的每個 Gem 的確切版本時,就會產生 Gemfile.lock。這樣可確保函式在部署時,使用與本機測試相同的依附元件版本。Gemfile.lock 的確切格式是 Bundler 專用的,不建議手動編輯。

如果您已使用 Bundler 安裝依附元件並在本機執行測試,那麼您可能已經有 Gemfile.lock 檔案。如果沒有,您可以執行以下指令來產生一個:

bundle lock

Functions Framework 是所有函式必備的依附元件。雖然 Cloud Run 函式會在函式建立時代為安裝,但為了清楚起見,建議您將其納入為明確的依附元件。

如果函式需要私人依附元件,建議您將 functions-framework 鏡像複製到私人登錄。將鏡像 functions-framework 納入函式的依附元件,避免從公開網際網路安裝套件。

封裝本機依附元件

您也可以將依附元件與函式一起封裝及部署。如果您無法透過 rubygems 套件管理工具使用依附元件,這種做法就很實用。

如要在本機封裝寶石,請將寶石納入函式的目錄結構目錄中,並在依附元件的 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"

如要進一步瞭解如何參照本機寶石路徑,請參閱 Gemfile 參考資料