Ruby 執行階段

Cloud Run 函式會在包含附加程式套件、語言支援的作業系統版本,以及支援及叫用函式的 Ruby 函式架構程式庫的環境中執行。這個環境會透過語言版本識別,稱為「執行階段 ID」。

函式準備

您可以直接在 Google Cloud 控制台中準備函式,也可以在本機上編寫函式並上傳。如要為 Ruby 開發作業準備本機電腦,請參閱「設定 Ruby 開發環境」。

支援的 Ruby 執行階段和基本映像檔

執行階段 執行階段 ID 堆疊 執行階段基本映像檔
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. 在「Runtime」清單中,選取 Ruby 執行階段版本。

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

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

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

    原始碼結構

    如要讓 Cloud Run 函式找到函式定義,您的原始碼必須遵循特定結構。詳情請參閱「編寫 Cloud Run 函式」。

    指定依附元件

    以 Ruby 編寫的 Cloud Run 函式會使用 bundler 存取依附元件。

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

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

    每個函式都必須提供 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"
    

    封裝本機依附元件

    您也可以將依附元件與函式一起封裝及部署。如果您無法使用 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 參考資料