Cloud Run 函式的執行環境包含作業系統版本、附加套件、語言支援,以及支援和叫用函式的 Ruby Functions Framework 程式庫。這個環境由語言版本識別,稱為執行階段 ID。
函式準備
您可以直接透過 Google Cloud 控制台準備函式,也可以在本機電腦上編寫函式後再上傳。如要準備本機電腦以進行 Ruby 開發作業,請參閱「設定 Ruby 開發環境」。
支援的 Ruby 執行階段和基礎映像檔
| 執行階段 | 執行階段 ID | 堆疊 | 執行階段基礎映像檔 |
|---|---|---|---|
| Ruby 4.0 (預先發布版) |
ruby40 | google-24-full (預設) | google-24-full/ruby40 |
| Ruby 3.4 | ruby34 |
|
|
| Ruby 3.3 | ruby33 |
|
|
| Ruby 3.2 | ruby32 |
|
|
| Ruby 3.0 | ruby30 | google-18-full | google-18-full/ruby30 |
| Ruby 2.7 | ruby27 | google-18-full | google-18-full/ruby27 |
| Ruby 2.6 | ruby26 | google-18-full | google-18-full/ruby26 |
選取執行階段
您可以在部署期間,為函式選取其中一個支援的 Ruby 執行階段。
您可以使用 Google Cloud 控制台或 gcloud CLI 選取執行階段版本。按一下分頁標籤,瞭解如何使用自選工具:
gcloud
部署函式時,請使用 --base-image 旗標指定函式的 Ruby 基礎映像檔。例如:
gcloud run deploy FUNCTION \
--source . \
--function FUNCTION_ENTRYPOINT \
--base-image ruby34
取代:
將 FUNCTION 替換為您要部署的函式名稱。您可以完全省略這個參數,但這樣系統會提示您輸入名稱。
FUNCTION_ENTRYPOINT,指定原始碼中函式的進入點。這是 Cloud Run 在函式執行時執行的程式碼。此旗標的值必須是原始碼中既有的函式名稱或完整類別名稱。
如需使用 gcloud CLI 部署函式的詳細操作說明,請參閱「在 Cloud Run 中部署函式」。
控制台
在 Google Cloud 控制台中建立或更新 Cloud Run 函式時,可以選取執行階段版本。如需部署函式的詳細操作說明,請參閱「在 Cloud Run 中部署函式」。
如要在 Google Cloud 控制台建立函式時選取執行階段,請按照下列步驟操作:
前往 Google Cloud 控制台的 Cloud Run 頁面:
按一下「編寫函式」。
在「執行階段」清單中,選取 Ruby 執行階段版本。
按一下「建立」,然後等待 Cloud Run 使用預留位置修訂版本建立服務。
控制台會將您重新導向至「來源」分頁,您可以在這裡查看函式的原始碼。按一下「儲存並重新部署」。
如需在部署函式後更新執行階段版本的詳細操作說明,請參閱「重新部署新的原始碼」。
原始碼結構
原始碼必須遵循特定結構,Cloud Run functions 才能找到函式的定義。詳情請參閱「編寫 Cloud Run 函式」。
指定依附元件
以 Ruby 編寫的 Cloud Run 函式會使用 bundler 來存取依附元件。
函式架構是所有函式的必要依附元件。雖然系統會在建立函式時為您安裝 Cloud Run functions,但我們建議您將其新增為依附元件,以求明確。
如果函式依附於私人依附元件,建議您將 functions-framework 鏡像到私人註冊資料庫。將鏡像的 functions-framework 新增為函式的依附元件,避免從公開網際網路安裝套件。
每個函式都必須提供 Gemfile,指定 functions_framework gem,以及函式所需的任何其他 gem。Gemfile 必須與包含函式程式碼的 app.rb 檔案位於同一目錄。此外,函式必須提供鎖定檔,指定所有傳輸依附元件及其確切版本。Gemfile.lock 檔案也位於 Gemfile 所在的目錄中。
部署函式時,Cloud Run 會使用 bundler 下載並安裝 Gemfile 和 Gemfile.lock 中宣告的依附元件。
Gemfile 會列出函式所需的套件,以及任何選用的版本限制。詳情請參閱 Gemfile 參考資料。
以下是 Gemfile 範例:
source "https://rubygems.org" gem "functions_framework", "~> 0.7" gem "google-cloud-storage", "~> 1.29"
封裝本機依附元件
您也可以將依附元件與函式一起封裝及部署。如果無法透過 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 參考資料。