在 Ruby 中指定依附元件
以 Ruby 編寫的 Cloud Run 函式會使用 bundler 來存取依附元件。您可以在部署函式時下載依附元件,也可以在本機與函式一起封裝依附元件。
每個函式都必須提供 Gemfile,指定 functions_framework gem,以及函式所需的任何其他 gem。Gemfile 必須與包含函式程式碼的 app.rb 檔案位於同一目錄。此外,函式必須提供鎖定檔,指定所有傳輸依附元件及其確切版本。Gemfile.lock 檔案也位於 Gemfile 所在的目錄中。
部署函式時,Cloud Run functions 會使用 bundler 下載並安裝 Gemfile 和 Gemfile.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 是由 bundler 在分析依附元件時所產生,會凍結要安裝的每個 Gem 確切版本。舉例來說,這可確保函式部署時使用的依附元件版本,與本機測試時使用的版本相同。Gemfile.lock 的確切格式屬於私人格式,不應手動編輯。
如果您已使用 bundler 安裝依附元件並在本機執行測試,可能已有 Gemfile.lock 檔案。如果沒有,您可以執行下列指令來產生:
bundle lock
函式架構是所有函式的必要依附元件。雖然系統會在建立函式時為您安裝 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 參考資料。