Die Ruby-Laufzeit ist das Softwarepaket, das für die Installation Ihres Anwendungscodes und der Abhängigkeiten sowie für die Ausführung dieser Anwendung in der flexiblen Umgebung verantwortlich ist.
Ruby-Versionen
Ruby 3.3 verwendet Buildpacks. Eine vollständige Liste der unterstützten Ruby-Versionen und der entsprechenden Ubuntu-Versionen finden Sie im Laufzeitsupportzeitplan.
Für die Verwendung einer unterstützten Ruby-Version müssen Sie Folgendes tun:
Geben Sie eine Ruby-Version im
Gemfile
an:RUBY VERSION ruby 3.3.x
Installieren Sie die CLI-Version 420.0.0 oder höher. Sie können die Befehlszeilentools mit dem Befehl
gcloud components update
aktualisieren. Zum Aufrufen der installierten Version können Sie den Befehlgcloud version
ausführen.Geben Sie die
operating_system
-Einstellung in derapp.yaml
-Datei an:runtime: ruby env: flex runtime_config: operating_system: "ubuntu22"
Optional können Sie mit einer
.ruby-version
-Datei in Ihrem Anwendungsverzeichnis eine Version des Ruby-Interpreters angeben. z. B.3.3.x
.
Vorgängerversionen
Geben Sie für die Ruby-Laufzeit Version 3.1 und früher eine Version des Ruby-Interpreters über eine .ruby-version
-Datei in Ihrem Anwendungsverzeichnis an.
Ist diese Datei vorhanden, installiert die Laufzeit beim Bereitstellen der Anwendung mithilfe von rbenv die angeforderte Ruby-Version. Wenn die angeforderte Version nicht installiert werden kann, zeigt App Engine während der Bereitstellung eine Fehlermeldung an.
Wenn Sie keine .ruby-version
-Datei angeben, ist die Ruby-Laufzeit standardmäßig Version 2.7. Der Standardwert kann sich jederzeit ändern. Daher sollten Sie in der Anwendung eine Ruby-Version angeben.
Unterstützung für andere Ruby-Laufzeiten
Wenn Sie eine Ruby-Version verwenden müssen, die nicht unterstützt wird, können Sie eine benutzerdefinierte Laufzeit erstellen und ein gültiges Basis-Image mit der von Ihnen benötigten Ruby-Version auswählen.
Informationen zu von Google bereitgestellten Basis-Images oder Docker-Basis-Images für Ruby finden Sie unter Benutzerdefinierte Laufzeiten erstellen.
Abhängigkeiten
Die Laufzeit sucht im Quellverzeichnis der Anwendung nach der Datei Gemfile
und verwendet Bundler
, um Abhängigkeiten zu installieren, bevor die Anwendung gestartet wird. Weitere Informationen zum Deklarieren und Verwalten von Paketen finden Sie unter Ruby-Bibliotheken verwenden.
C-Bibliotheken mit Ruby verwenden
Für Ruby-Bibliotheken, die C-Erweiterungen benötigen, sind die Header für die aktuelle Ruby-Version und die folgenden Ubuntu-Pakete auf dem System vorinstalliert.
autoconf
build-essential
ca-certificates
cmake
curl
file
git
imagemagick
libcurl3
libcurl3-gnutls
libcurl4-openssl-dev
libffi-dev
libgdbm-dev
libgit2-dev
libgmp-dev
libicu-dev
libjemalloc-dev
libjemalloc1
libmagickwand-dev
libmysqlclient-dev
libncurses5-dev
libpq-dev
libqdbm-dev
libreadline6-dev
libsqlite3-dev
libssl-dev
libxml2-dev
libxslt-dev
libyaml-dev
libz-dev
systemtap
tzdata
Diese Pakete ermöglichen die Installation der gängigsten Ruby-Bibliotheken. Wenn Ihre Anwendung zusätzliche Abhängigkeiten auf Betriebssystemebene erfordert, verwenden Sie eine auf dieser Laufzeit basierende benutzerdefinierte Laufzeit, um die entsprechenden Pakete zu installieren.
Anwendungsstart
Die Laufzeit startet Ihre Anwendung mit dem in app.yaml
definierten entrypoint
. Der Einstiegspunkt sollte einen Prozess starten, der auf HTTP-Anfragen an dem von der Umgebungsvariablen PORT
definierten Port antwortet.
Beispiel:
entrypoint: bundle exec rails server -p $PORT
Die meisten Webanwendungen verwenden einen von Rack unterstützten Webserver wie Puma, Unicorn oder Thin.
Sie müssen den Server als Abhängigkeit in der Konfigurationsdatei Gemfile
Ihrer Anwendung hinzufügen. Von der Laufzeit werden alle Abhängigkeiten installiert, bevor der Einstiegspunkt aufgerufen wird.
source "https://rubygems.org"
gem "rack"
gem "puma"
Beispiel für einen Einstiegspunkt unter Verwendung von Puma für eine Rails-Anwendung:
entrypoint: bundle exec rails server Puma -p $PORT
Beispiel für einen Einstiegspunkt unter Verwendung von Puma für eine beliebige Rack-Anwendung:
entrypoint: bundle exec rackup -s Puma -p $PORT
Für Anwendungen, die Anfragen ohne einen Rack-Server verarbeiten können, müssen Sie lediglich ein Ruby-Skript ausführen:
entrypoint: bundle exec ruby app.rb
Umgebungsvariablen
Die folgenden Umgebungsvariablen werden durch die Laufzeitumgebung festgelegt:
Umgebungsvariable | Beschreibung |
---|---|
GAE_INSTANCE |
Der Name der aktuellen Instanz |
GAE_MEMORY_MB |
Die Größe des für den Anwendungsprozess verfügbaren Speichers |
GAE_SERVICE |
Der in der Datei app.yaml Ihrer Anwendung angegebene Dienstname. Wenn kein Dienstname angegeben ist, wird als Wert default festgelegt. |
GAE_VERSION |
Das Versionslabel der aktuellen Anwendung |
GOOGLE_CLOUD_PROJECT |
Die mit Ihrer Anwendung verknüpfte Projekt-ID, die in der Google Cloud Console angezeigt wird |
PORT |
Der Port, der HTTP-Anfragen empfängt |
RACK_ENV |
Legen Sie production fest. |
RAILS_ENV |
Legen Sie production fest. |
RAILS_SERVE_STATIC_FILES |
Legen Sie true fest. |
Sie können mit app.yaml
noch weitere Umgebungsvariablen festlegen.
Metadatenserver
Jede Instanz Ihrer Anwendung kann den Compute Engine-Metadatenserver verwenden, um Informationen über die Instanz abzufragen, einschließlich ihres Hostnamens, ihrer externen IP-Adresse, Instanz-ID, benutzerdefinierten Metadaten und Dienstkontoinformationen. Sie können in App Engine nicht für jede einzelne Instanz benutzerdefinierte Metadaten festlegen. Sie haben aber die Möglichkeit, projektweite benutzerdefinierte Metadaten festzulegen und diese aus den App Engine- und Compute Engine-Instanzen zu lesen.
Diese Beispielfunktion ruft eine externe IP-Adresse einer Instanz über den Metadatenserver ab: