Ruby-Laufzeit

Die Cloud Run-Funktion wird in einer Umgebung ausgeführt, die aus einer Betriebssystemversion, Add-on-Paketen, Sprachunterstützung und der Ruby Functions Framework-Bibliothek besteht, die Ihre Funktion unterstützt und aufruft. Diese Umgebung wird durch die Sprachversion identifiziert und als Laufzeit-ID bezeichnet.

Funktionsvorbereitung

Sie können eine Funktion direkt über die Google Cloud Console vorbereiten oder auf Ihren lokalen Computer schreiben und hochladen. Informationen zum Vorbereiten Ihres lokalen Computers für die Ruby-Entwicklung finden Sie unter Ruby-Entwicklungsumgebung einrichten.

Unterstützte Ruby-Laufzeiten und Basis-Images

Laufzeit Laufzeit-ID Stacks Laufzeit-Basis-Image
Ruby 3.3 ruby33
  • google-22 (default)
  • google-22-full
  • google-22/ruby33
  • google-22-full/ruby33
  • Ruby 3.2 ruby32
  • google-22 (default)
  • 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

    Laufzeit auswählen

    Sie können während der Bereitstellung eine der unterstützten Ruby-Laufzeiten für Ihre Funktion auswählen.

    Sie können eine Laufzeitversion über die Google Cloud Console oder die gcloud CLI auswählen. Klicken Sie auf den Tab, um eine Anleitung zum Verwenden des gewünschten Tools zu erhalten.

    gcloud

    Geben Sie das Ruby-Basis-Image für Ihre Funktion mit dem Flag --base-image an, während Sie die Funktion bereitstellen. Beispiel:

    gcloud run deploy FUNCTION \
        --source . \
        --function FUNCTION_ENTRYPOINT \
        --base-image ruby33
    

    Ersetzen Sie:

    • FUNCTION durch den Namen der Funktion, die Sie bereitstellen. Sie können diesen Parameter auch weglassen, werden dann jedoch nach dem Namen gefragt.

    • FUNCTION_ENTRYPOINT durch den Einstiegspunkt zur Funktion in Ihrem Quellcode. Dies ist der Code, der von Cloud Run ausgeführt wird, wenn Ihre Funktion ausgeführt wird. Der Wert dieses Flags muss ein Funktionsname oder ein voll qualifizierter Klassenname sein, der in Ihrem Quellcode vorhanden ist.

    Eine ausführliche Anleitung zum Bereitstellen einer Funktion mit der gcloud CLI finden Sie unter Funktionen in Cloud Run bereitstellen.

    Console

    Sie können eine Laufzeitversion auswählen, wenn Sie in der Google Cloud Console eine Cloud Run-Funktion erstellen oder aktualisieren. Eine ausführliche Anleitung zum Bereitstellen einer Funktion finden Sie unter Funktionen in Cloud Run bereitstellen.

    So wählen Sie beim Erstellen einer Funktion eine Laufzeit in der Google Cloud Console aus:

    1. Wechseln Sie in der Google Cloud Console zur Seite Cloud Run.

      Zu Cloud Run

    2. Klicken Sie auf Funktion schreiben.

    3. Wählen Sie in der Liste Laufzeit eine Ruby-Laufzeitversion aus.

    4. Klicken Sie auf Erstellen und warten Sie, bis der Dienst in Cloud Run mit einer Platzhalter-Überarbeitung erstellt wurde.

    5. Die Console leitet Sie zum Tab Quelle weiter, auf dem Sie den Quellcode Ihrer Funktion sehen. Klicken Sie auf Speichern und neu bereitstellen.

    Eine ausführliche Anleitung zum Aktualisieren der Laufzeitversion nach der Bereitstellung Ihrer Funktion finden Sie unter Neuen Quellcode noch einmal bereitstellen.

    Struktur des Quellcodes

    Damit Cloud Run Functions die Definition Ihrer Funktion findet, muss Ihr Quellcode einer bestimmten Struktur entsprechen. Weitere Informationen finden Sie unter Cloud Run-Funktionen schreiben.

    Abhängigkeiten angeben

    In Ruby geschriebene Cloud Run-Funktionen verwenden Bundler, um auf Abhängigkeiten zuzugreifen.

    Das Functions Framework ist eine erforderliche Abhängigkeit für alle Funktionen. Obwohl Cloud Run-Funktionen sie bei der Erstellung der Funktion für Sie installiert, empfehlen wir, sie zur Klarstellung hinzuzufügen.

    Wenn Ihre Funktion private Abhängigkeiten benötigt, sollten Sie functions-framework in Ihre private Registry spiegeln. Fügen Sie die gespiegelte functions-framework als Abhängigkeit zu Ihrer Funktion hinzu, um die Installation des Pakets aus dem öffentlichen Internet zu vermeiden.

    Jede Funktion muss eine Gemfile bereitstellen, die das Gem functions_framework und alle weiteren von der Funktion benötigten Gems angibt. Gemfile muss sich im selben Verzeichnis befinden wie die Datei app.rb, die den Funktionscode enthält. Darüber hinaus muss Ihre Funktion eine Sperrdatei bereitstellen, in der alle transitiven Abhängigkeiten und ihre exakten Versionen angegeben sind. Die Datei Gemfile.lock befindet sich auch im selben Verzeichnis, in dem sich auch die Gemfile befindet.

    Wenn Sie die Funktion bereitstellen, lädt Cloud Run die in Gemfile und Gemfile.lock deklarierten Abhängigkeiten mithilfe von bundler herunter und installiert sie.

    Unter Gemfile sind die für Ihre Funktion erforderlichen Pakete sowie optionale Versionseinschränkungen aufgelistet. Weitere Informationen finden Sie in der Gemfile-Referenz.

    Folgendes ist ein Gemfile-Beispiel.

    source "https://rubygems.org"
    
    gem "functions_framework", "~> 0.7"
    gem "google-cloud-storage", "~> 1.29"
    

    Paket mit lokalen Abhängigkeiten erstellen

    Sie können auch ein Paket mit der Funktion und ihren Abhängigkeiten erstellen und bereitstellen. Dieser Ansatz ist nützlich, wenn Ihre Abhängigkeit nicht über den Rubygem-Paketmanager verfügbar ist.

    Wenn Sie ein Gem lokal packen möchten, fügen Sie es in ein Verzeichnis in der Verzeichnisstruktur Ihrer Funktion ein und geben Sie den Pfad im Eintrag Gemfile der Abhängigkeit an. Das Gem-Verzeichnis muss eine gültige gemspec-Datei enthalten. Es muss sich in der Verzeichnishierarchie der Funktion befinden, damit der Code zusammen mit der Funktion bereitgestellt wird. Beispielsweise können Sie eine Verzeichnisstruktur verwenden, die so aussieht:

    myfunction/
    ├── Gemfile
    ├── Gemfile.lock
    ├── app.rb
    └── my_private_gem/
        ├── lib/
        |   └── my_private_gem.rb
        └── my_private_gem.gemspec
    

    Der Eintrag für Gemfile könnte so aussehen:

    source "https://rubygems.org"
    
    gem "functions_framework", "~> 0.7"
    gem "my_private_gem", path: "./my_private_gem"
    

    Weitere Informationen zum Verweisen auf lokale Gem-Pfade finden Sie in der Gemfile-Referenz.