Ruby 執行階段

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
  • google-22 (預設)
  • google-22-full
  • google-22/ruby34
  • google-22-full/ruby34
  • Ruby 3.3 ruby33
  • google-22 (預設)
  • google-22-full
  • google-22/ruby33
  • google-22-full/ruby33
  • Ruby 3.2 ruby32
  • google-22 (預設)
  • google-22-full
  • google-22/ruby32
  • google-22-full/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 控制台建立函式時選取執行階段,請按照下列步驟操作:

    1. 前往 Google Cloud 控制台的 Cloud Run 頁面:

      前往 Cloud Run

    2. 按一下「編寫函式」

    3. 在「執行階段」清單中,選取 Ruby 執行階段版本。

    4. 按一下「建立」,然後等待 Cloud Run 使用預留位置修訂版本建立服務。

    5. 控制台會將您重新導向至「來源」分頁,您可以在這裡查看函式的原始碼。按一下「儲存並重新部署」

    如需在部署函式後更新執行階段版本的詳細操作說明,請參閱「重新部署新的原始碼」。

    原始碼結構

    原始碼必須遵循特定結構,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 下載並安裝 GemfileGemfile.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 參考資料