Beginnen Sie mit der Entwicklung von Ruby on Rails-Anwendungen, die in der flexiblen Umgebung von App Engine ausgeführt werden. Die von Ihnen erstellten Anwendungen werden auf derselben Infrastruktur ausgeführt, auf der alle Google-Produkte basieren. So können Sie sicher sein, dass sie für alle Nutzer skaliert werden können, unabhängig davon, ob es sich um wenige oder Millionen von ihnen handelt.
In dieser Anleitung wird davon ausgegangen, dass Sie mit der Rails-Webentwicklung vertraut sind. In dieser Anleitung wird Ihnen die Einrichtung von Cloud SQL für PostgreSQL mit einer neuen Rails-Anwendung erklärt. Sie können diese Anleitung auch als Referenz zum Konfigurieren vorhandener Rails-Anwendungen für die Verwendung von Cloud SQL for PostgreSQL verwenden.
Für diese Anleitung ist Ruby 3.0 oder höher erforderlich.
Hinweis
- Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud SQL Admin API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud SQL Admin API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init
Cloud SQL für PostgreSQL-Instanz vorbereiten
Richten Sie für diese Anleitung eine Cloud SQL für PostgreSQL-Instanz ein.
Erstellen Sie eine PostgreSQL-Instanz. In dieser Anleitung lautet der Name der Instanz
rails-cloudsql-instance.Erstellen Sie eine Datenbank in der Instanz. In dieser Anleitung lautet der Name der Produktionsdatenbank
cat_list_production.Legen Sie das Passwort für den Postgres-Nutzer für die Instanz fest.
Lokale Umgebung für Rails einrichten
So richten Sie eine lokale Umgebung für diese Anleitung ein:
Installieren Sie Ruby 3.0 oder höher.
Installieren Sie das Gem Rails 7.
Installieren Sie das Gem Bundler.
Weitere Informationen zur Installation von Rails und dessen Abhängigkeiten finden Sie im offiziellen Leitfaden Erste Schritte mit Rails.
Nachdem Sie alle vorbereitenden Schritte durchgeführt haben, können Sie eine Rails-Anwendung mit Cloud SQL für PostgreSQL erstellen und bereitstellen. In den folgenden Abschnitten wird gezeigt, wie Sie eine Anwendung konfigurieren, mit Cloud SQL für PostgreSQL verbinden und bereitstellen.
Neue App zum Auflisten von Katzen erstellen
Führen Sie den Befehl
rails newaus, um eine neue Rails-Anwendung zu erstellen. Diese Anwendung speichert eine Liste von Katzen in Cloud SQL für PostgreSQL.rails new cat_sample_appWechseln Sie in das Verzeichnis mit der erstellten Rails-Anwendung:
cd cat_sample_app
Anwendung lokal ausführen
So führen Sie die neue Rails-Anwendung lokal auf Ihrem Computer aus:
Starten Sie einen lokalen Webserver:
bundle exec bin/rails serverRufen Sie in einem Browser http://localhost:3000/ auf.
In der Beispiel-App wird das Rails-Logo mit den Rails- und Ruby-Versionen angezeigt.
Gerüst für eine Liste von Katzen generieren
Generieren Sie ein Gerüst für eine Ressource namens Cat, die zum Erstellen einer Liste von Katzen mit ihrem Namen und ihrem Alter verwendet wird.
Generieren Sie das Gerüst:
bundle exec rails generate scaffold Cat name:string age:integerDer Befehl generiert ein Modell, einen Controller und Ansichten für die Ressource
Cat.invoke active_record create db/migrate/20230922063608_create_cats.rb create app/models/cat.rb invoke test_unit create test/models/cat_test.rb create test/fixtures/cats.yml invoke resource_route route resources :cats invoke scaffold_controller create app/controllers/cats_controller.rb invoke erb create app/views/cats create app/views/cats/index.html.erb create app/views/cats/edit.html.erb create app/views/cats/show.html.erb create app/views/cats/new.html.erb create app/views/cats/_form.html.erb create app/views/cats/_cat.html.erb invoke resource_route invoke test_unit create test/controllers/cats_controller_test.rb create test/system/cats_test.rb invoke helper create app/helpers/cats_helper.rb invoke test_unit invoke jbuilder create app/views/cats/index.json.jbuilder create app/views/cats/show.json.jbuilder create app/views/cats/_cat.json.jbuilderÖffnen Sie die Datei
config/routes.rb, um die folgenden generierten Inhalte zu sehen.Fügen Sie der Datei
root 'cats#index'hinzu.Speichern Sie die Datei und schließen Sie sie.
Testen Sie die Rails-App wie zuvor beschrieben.
Cloud SQL für PostgreSQL mit App Engine verwenden
Cloud SQL for PostgreSQL ist ein vollständig verwalteter Datenbankdienst, mit dem Sie Ihre relationalen PostgreSQL-Datenbanken inGoogle Cloudeinrichten, verwalten und verwalten können. Sie können Cloud SQL in einer Rails-Anwendung wie jede andere relationale Datenbank verwenden.
Cloud SQL für PostgreSQL einrichten
So legen Sie die Verwendung von Cloud SQL mit Ihrer Rails-Anwendung in der Produktion fest:
Fügen Sie der Datei
Gemfiledie Gemspgundappenginehinzu:bundle add pg bundle add appengineDie Rails
Gemfileenthält die folgenden zusätzlichengem-Einträge:Öffnen Sie die Datei
config/database.yml, um die Rails-Anwendung für die Verbindung zu Cloud SQL zu konfigurieren. Es werden die folgenden Datenbankeinstellungen für SQLite angezeigt:Konfigurieren Sie den Cloud SQL-Instanzverbindungsnamen für die App Engine-Produktionsumgebung.
Rufen Sie den Instanzverbindungsnamen ab:
gcloud sql instances describe rails-cloudsql-instanceKopieren Sie den Wert neben
connectionName.
Ändern Sie die Konfiguration der Produktionsdatenbank
database.ymlwie folgt:Wobei:
[YOUR_POSTGRES_USERNAME]ist der Nutzername der Cloud SQL for PostgreSQL-Instanz.[YOUR_POSTGRES_PASSWORD]ist das Passwort Ihrer Cloud SQL for PostgreSQL-Instanz.[YOUR_INSTANCE_CONNECTION_NAME]ist der im vorherigen Schritt kopierte Instanzverbindungsname
Die Rails-App ist nun so eingerichtet, dass sie Cloud SQL bei der Bereitstellung in der flexiblen App Engine-Umgebung verwendet.
App in der flexiblen App Engine-Umgebung bereitstellen
Die flexible App Engine-Umgebung verwendet eine Datei mit dem Namen app.yaml zur Konfiguration der Anwendungsbereitstellung. Wenn diese Datei nicht vorhanden ist, versucht die gcloud CLI, die Konfiguration selbst zu bestimmen. Sie sollten jedoch die Datei definieren, um die erforderlichen Konfigurationseinstellungen für den geheimen Schlüssel für Rails und Cloud SQL bereitzustellen.
Erstellen Sie eine neue Datei mit dem Namen app.yaml im Stammverzeichnis der Rails-Anwendung und fügen Sie Folgendes hinzu, um die Beispielanwendung für die Bereitstellung in App Engine zu konfigurieren:
Konfigurieren Sie den geheimen Rails-Schlüssel in der Datei app.yaml
Wenn eine Rails-Anwendung in der production - Umgebung bereitgestellt wird, legen Sie die Umgebungsvariable SECRET_KEY_BASE mit einem geheimen Schlüssel fest, um die Sitzungsdaten der Nutzer zu schützen. Diese Umgebungsvariable wird aus der Datei config/secrets.yml in Ihrer Rails-Anwendung gelesen.
Erzeugen Sie einen neuen geheimen Schlüssel.
bundle exec bin/rails secretKopieren Sie den generierten geheimen Schlüssel.
.ffnen Sie die zuvor erstellte Datei
app.yamlund fügen Sie den Abschnittenv_variableshinzu.env_variablesdefiniert Umgebungsvariablen in der flexiblen App Engine-Umgebung. Die Dateiapp.yamlsollte ähnlich wie im folgenden Beispiel aussehen, wobei[SECRET_KEY]durch Ihren geheimen Schlüssel ersetzt wird.
Konfigurieren Sie die Cloud SQL-Instanz in der Datei app.yaml
Konfigurieren Sie als Nächstes die flexible App Engine-Umgebung für die Verwendung einer bestimmten Cloud SQL-Instanz, indem Sie den Verbindungsnamen der Cloud SQL-Instanz in der app.yaml - Konfigurationsdatei angeben.
Öffnen Sie die Datei
app.yamlund fügen Sie einen neuen Abschnitt mit dem Namenbeta_settingshinzu.Definieren Sie einen verschachtelten Parameter
cloud_sql_instancesmit dem Instanzverbindungsnamen als Wert.app.yamlsollte in etwa so aussehen:
App in einer flexiblen App Engine-Umgebung erstellen
Wenn Sie zum ersten Mal eine Anwendung bereitstellen, müssen Sie eine Anwendung in der flexiblen App Engine-Umgebung erstellen und die Region auswählen, in der Sie die Rails-Anwendung ausführen möchten.
Erstellen Sie eine App Engine-Anwendung:
gcloud app createWählen Sie eine Region aus, die die flexible App Engine-Umgebung für Ruby-Anwendungen unterstützt. Weitere Informationen finden Sie unter Regionen und Zonen.
Neue Version bereitstellen
Als Nächstes stellen Sie mit dem folgenden Befehl eine neue Version der Rails-Anwendung bereit, die in der Datei app.yaml beschrieben wird, ohne den Traffic von der aktuellen Standardbereitstellungsversion weiterzuleiten:
gcloud app deploy --no-promote
Es kann einige Minuten dauern, bis die Bereitstellung abgeschlossen ist. Warten Sie, bis die erfolgreiche Bereitstellung angezeigt wird. Bereitgestellte Versionen werden in der App Engine-Versionsliste aufgeführt.
Wenn Sie nach dem Bereitstellen der neuen Version versuchen, auf diese neue Version zuzugreifen, wird die folgende Fehlermeldung angezeigt, da die Datenbank nicht migriert wurde.

Erteilen Sie die erforderliche Berechtigung für das Gem appengine
Als Nächstes gewähren Sie Zugriff auf das Cloudbuild-Dienstkonto, um mit dem Gem appengine Migrationen von Produktionsdatenbanken auszuführen.
Listen Sie die verfügbaren Projekte auf:
gcloud projects listSuchen Sie in der Ausgabe das Projekt, das Sie zur Bereitstellung der Anwendung verwenden möchten, und kopieren Sie die Projektnummer.
Fügen Sie der Projekt-IAM-Richtlinie ein neues Mitglied für die Rolle
roles/editorhinzu, um Datenbankmigrationen auszuführen. Ersetzen SiePROJECT_IDdurch die ID Ihres Projekts in Google Cloud undPROJECT_NUMBERdurch die Projektnummer, die Sie im vorherigen Schritt kopiert haben.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com \ --role=roles/editor
Rails-Datenbank migrieren
Mit Rails-Datenbankmigrationen kann das Schema Ihrer Datenbank ohne SQL-Syntax direkt aktualisiert werden. Als Nächstes migrieren Sie Ihre cat_list_production - Datenbank.
Das Gem appengine stellt die Rake-Aufgabe appengine:exec bereit, um einen Befehl für die neueste bereitgestellte Version Ihrer Anwendung in der flexiblen App Engine-Produktionsumgebung auszuführen.
Migrieren Sie die Cloud SQL für PostgreSQL-Datenbank
cat_list_productionin der Produktion:bundle exec rake appengine:exec -- bundle exec rake db:migrateDie Ausgabe sollte etwa so aussehen:
---------- EXECUTE COMMAND ---------- bundle exec rake db:migrate Debuggee gcp:787021104993:8dae9032f8b02004 successfully registered == 20230922063608 CreateCats: migrating ======================================= -- create_table(:cats) -> 0.0219s == 20230922063608 CreateCats: migrated (0.0220s) ============================== ---------- CLEANUP ----------Geben Sie zur Überprüfung der Datenbankmigration die folgende URL in Ihren Browser ein:
https://VERSION_ID-dot-PROJECT_ID.REGION_ID.r.appspot.comDabei gilt:
VERSION_ID: Die neue Version der Anwendung, die Sie zuvor bereitgestellt haben. Verwenden Siegcloud app versions list, um eine Liste der Versionen abzurufen. Der letzte Eintrag der Standarddienstversion ist die aktuelle Bereitstellung.PROJECT_ID: Ihre Google Cloud Projekt-IDREGION_ID: Code, der Ihrer Anwendung von App Engine zugewiesen wird
Bei einer erfolgreichen Bereitstellung wird Folgendes angezeigt:

Traffic zu neuer Version migrieren
Abschließend können Sie mithilfe des folgenden Befehls den Traffic zur neu erstellten Version umleiten:
gcloud app services set-traffic default --splits VERSION=1
Die neue Version der Anwendung kann jetzt über die folgende URL aufgerufen werden:
https://PROJECT_ID.REGION_ID.r.appspot.com
App Engine-Logs aufrufen
Wenn Sie nach der Erstellung der Rails-Anwendung die Logs aufrufen möchten, Sie können die Anwendungslogs mit dem Log-Explorer in der Google Cloud Console lesen.
Weitere Informationen zum Lesen von Logs mit der gcloud CLI
Ressourcen bereinigen
Nachdem Sie die Anleitung abgeschlossen haben, können Sie die erstellten Ressourcen bereinigen, damit sie keine Kontingente mehr nutzen und keine Gebühren mehr anfallen. In den folgenden Abschnitten erfahren Sie, wie Sie diese Ressourcen löschen oder deaktivieren.
Projekt löschen
Am einfachsten vermeiden Sie weitere Kosten, wenn Sie das zum Ausführen der Anleitung erstellte Projekt löschen.
So löschen Sie das Projekt:
- Wechseln Sie in der Google Cloud -Console zur Seite Ressourcen verwalten.
- Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
- Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.
App Engine-Version löschen
So löschen Sie eine Anwendungsversion:
- Rufen Sie in der Google Cloud Console die Seite Versionen für App Engine auf.
- Klicken Sie auf das Kästchen für die nicht standardmäßige Anwendungsversion, die Sie löschen möchten.
- Klicken Sie zum Löschen der Anwendungsversion auf Löschen.
Cloud SQL-Instanz löschen
So löschen Sie eine Cloud SQL-Instanz:
- Rufen Sie in der Google Cloud Console die Seite Instanzen auf.
- Klicken Sie auf den Namen der SQL-Instanz, die Sie löschen möchten.
- Klicken Sie zum Löschen der Instanz auf Löschen und folgen Sie der Anleitung.