Commencez à développer des applications Ruby on Rails qui s'exécutent dans l'environnement flexible App Engine. Les applications créées sont exécutées sur l'infrastructure sur laquelle sont basés tous les produits Google, vous avez la garantie d'un dimensionnement efficace, à même de desservir l'ensemble de vos utilisateurs, qu'ils soient une poignée ou plusieurs millions.
Dans ce tutoriel, nous partons du principe que vous connaissez bien le développement Web avec Rails. Il vous explique comment configurer Cloud SQL pour PostgreSQL avec une nouvelle application Rails. Vous pouvez également utiliser ce tutoriel comme référence pour la configuration d'applications Rails existantes afin d'utiliser Cloud SQL pour PostgreSQL.
Ce tutoriel nécessite Ruby 2.6 ou 2.7.
Avant de commencer
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud SQL Admin API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud SQL Admin API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Préparer une instance Cloud SQL pour PostgreSQL
Configurez une instance Cloud SQL pour PostgreSQL pour ce tutoriel.
Créez une instance PostgreSQL. Dans le cadre de ce tutoriel, le nom de l'instance est
rails-cloudsql-instance
.Créez une base de données dans l'instance. Dans le cadre de ce tutoriel, le nom de la base de données de production est
cat_list_production
.Définissez le mot de passe utilisateur postgres pour l'instance.
Configurer votre environnement local pour Rails
Pour configurer votre environnement local pour ce tutoriel, procédez comme suit :
Pour obtenir plus d'informations sur l'installation de Rails et de ses dépendances, reportez-vous au guide officiel Getting started with Rails.
Une fois les conditions préalables remplies, vous pouvez créer et déployer une application Rails à l'aide de Cloud SQL pour PostgreSQL. Les sections suivantes vous guident dans la configuration, la connexion à Cloud SQL pour PostgreSQL et le déploiement d'une application.
Créer une application pour répertorier des chats
Exécutez la commande
rails new
pour créer une application Rails. Cette application stocke une liste de chats dans Cloud SQL pour PostgreSQL.rails new cat_sample_app
Accédez au répertoire contenant l'application Rails générée.
cd cat_sample_app
Exécuter l'application en local
Pour exécuter la nouvelle application Rails sur votre ordinateur local :
Installez les dépendances en utilisant Bundler :
bundle install
Démarrez un serveur Web local :
bundle exec bin/rails server
Dans un navigateur, accédez à http://localhost:3000/
Un message Yay! You're on Rails! (Bravo ! Vous êtes sur Rails !), généré par l'application, s'affiche sur la page.
Générer un scaffold (échafaudage) pour répertorier des chats
Générez un scaffold pour une ressource nommée Cat
qui servira à répertorier les chats avec leur nom et leur âge.
Générez le scaffold.
bundle exec rails generate scaffold Cat name:string age:integer
Cette commande génère un modèle, un contrôleur et des vues pour la ressource
Cat
.invoke active_record create db/migrate/20170804210744_create_cats.rb create app/models/cat.rb invoke rspec create spec/models/cat_spec.rb 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 invoke jbuilder create app/views/cats/index.json.jbuilder create app/views/cats/show.json.jbuilder create app/views/cats/_cat.json.jbuilder invoke assets invoke js create app/assets/javascripts/cats.js invoke scss create app/assets/stylesheets/cats.scss invoke scss create app/assets/stylesheets/scaffolds.scss
Ouvrez le fichier
config/routes.rb
pour voir le contenu généré, reproduit ci-dessous.Ajoutez
root 'cats#index'
au fichier.Enregistrez le fichier, puis fermez-le.
Testez l'application Rails comme indiqué précédemment.
Utiliser Cloud SQL pour PostgreSQL avec App Engine
Cloud SQL pour PostgreSQL est un service de base de données entièrement géré qui facilite la configuration, la maintenance, la gestion et l'administration de vos bases de données relationnelles PostgreSQL dans Google Cloud. Vous pouvez utiliser Cloud SQL dans une application Rails comme toute autre base de données relationnelle.
Configurer Cloud SQL pour PostgreSQL
Pour commencer à utiliser Cloud SQL avec votre application Rails en production :
Ajoutez les gems
pg
etappengine
au fichierGemfile
.bundle add pg bundle add appengine
Le fichier Rails
Gemfile
contient les entréesgem
supplémentaires suivantes :Pour configurer l'application Rails afin qu'elle se connecte à Cloud SQL, ouvrez le fichier
config/database.yml
. Les paramètres de base de données réutilisables ci-dessous, définis pour SQLite, s'affichent :Configurez le nom de connexion de l'instance Cloud SQL pour l'environnement de production App Engine.
Récupérez le nom de connexion de l'instance.
gcloud sql instances describe rails-cloudsql-instance
Copiez la valeur en regard de
connectionName
.
Modifiez la configuration de la base de données de production
database.yml
comme suit :Où :
[YOUR_POSTGRES_USERNAME]
représente le nom d'utilisateur de votre instance Cloud SQL pour PostgreSQL.[YOUR_POSTGRES_PASSWORD]
représente le mot de passe de votre instance Cloud SQL pour PostgreSQL.[YOUR_INSTANCE_CONNECTION_NAME]
représente le nom de connexion de l'instance que vous avez copié à l'étape précédente.
L'application Rails est désormais configurée pour utiliser Cloud SQL lors du déploiement dans l'environnement flexible App Engine.
Déployer l'application dans l'environnement flexible App Engine
L'environnement flexible App Engine utilise un fichier appelé app.yaml pour décrire la configuration de déploiement d'une application. Si ce fichier n'est pas présent, la CLI gcloud tente de deviner la configuration du déploiement. Cependant, vous devez définir ce fichier pour fournir les paramètres de configuration requis pour la clé secrète Rails et pour Cloud SQL.
Pour configurer l'exemple d'application en vue du déploiement sur App Engine, créez un fichier nommé app.yaml
à la racine du répertoire de l'application Rails et ajoutez-y les lignes suivantes :
Configurer la clé secrète Rails dans le fichier app.yaml
Lorsqu'une application Rails est déployée dans l'environnement production
, définissez la variable d'environnement SECRET_KEY_BASE
sur une valeur de clé secrète afin de protéger les données de session des utilisateurs. Cette variable d'environnement est lue à partir du fichier config/secrets.yml
dans votre application Rails.
Générez une nouvelle clé secrète.
bundle exec bin/rails secret
Copiez la clé secrète générée.
Ouvrez le fichier
app.yaml
que vous avez créé précédemment et ajoutez une sectionenv_variables
. Le fichierenv_variables
définit les variables d'environnement dans l'environnement flexible App Engine. Le fichierapp.yaml
doit alors ressembler à l'exemple suivant, la valeur de[SECRET_KEY]
étant remplacée par votre clé secrète.
Configurer l'instance Cloud SQL dans le fichier app.yaml
Ensuite, configurez l'environnement flexible App Engine pour utiliser l'instance Cloud SQL spécifiée. Pour cela, indiquez le nom de connexion de l'instance Cloud SQL dans le fichier de configuration app.yaml
.
Ouvrez le fichier
app.yaml
et ajoutez une section appeléebeta_settings
.Définissez un paramètre imbriqué
cloud_sql_instances
ayant comme valeur le nom de connexion de l'instance.Le fichier
app.yaml
doit ressembler à ceci :
Créer une application d'environnement flexible App Engine
Si vous déployez une application pour la première fois, vous devez créer une application d'environnement flexible App Engine et sélectionner la région dans laquelle vous souhaitez exécuter l'application Rails.
Créez une application App Engine.
gcloud app create
Sélectionnez une région prenant en charge l'environnement flexible App Engine pour les applications Ruby. Obtenez plus d'informations sur les régions et les zones.
Déployer une nouvelle version
L'étape suivante consiste à déployer une nouvelle version de l'application Rails décrite dans le fichier app.yaml
sans rediriger le trafic depuis la version de diffusion par défaut actuelle en exécutant la commande suivante :
gcloud app deploy --no-promote
Le déploiement peut prendre quelques minutes. Attendez qu'un message de réussite apparaisse. Vous pouvez afficher les versions déployées dans la liste des versions d'App Engine.
Une fois que vous avez déployé la nouvelle version, si vous tentez d'y accéder, le message d'erreur suivant s'affiche car vous n'avez pas migré la base de données.
Accorder l'autorisation d'accès au gem appengine
Ensuite, accordez l'accès au compte de service cloudbuild pour exécuter des migrations de base de données de production à l'aide du appengine
.
Répertoriez les projets disponibles.
gcloud projects list
Dans le résultat, recherchez le projet que vous souhaitez utiliser pour déployer votre application et copiez le numéro de projet associé.
Ajoutez un membre à la stratégie IAM de votre projet afin d'autoriser le rôle
roles/editor
à exécuter des migrations de base de données. Remplacez[YOUR-PROJECT-ID]
par l'ID de votre projet Google Cloud et[PROJECT_NUMBER]
par le numéro de projet que vous avez copié à l'étape précédente.gcloud projects add-iam-policy-binding [YOUR-PROJECT-ID] \ --member=serviceAccount:[PROJECT_NUMBER]@cloudbuild.gserviceaccount.com \ --role=roles/editor
Migrer votre base de données Rails
Les migrations de base de données Rails permettent de mettre à jour le schéma de votre base de données sans utiliser directement la syntaxe SQL. Vous allez ensuite migrer votre base de données cat_list_production
.
Le gem appengine
fournit la tâche Rake appengine:exec
qui permet d'exécuter une commande sur la dernière version déployée pour votre application dans l'environnement flexible App Engine de production.
Migrez en production la base de données
cat_list_production
Cloud SQL pour PostgreSQL.bundle exec rake appengine:exec -- bundle exec rake db:migrate
Un résultat semblable à celui-ci s'affiche :
---------- EXECUTE COMMAND ---------- bundle exec rake db:migrate Debuggee gcp:787021104993:8dae9032f8b02004 successfully registered == 20170804210744 CreateCats: migrating ======================================= -- create_table(:cats) -> 0.0219s == 20170804210744 CreateCats: migrated (0.0220s) ============================== ---------- CLEANUP ----------
Pour valider la migration de la base de données, saisissez l'URL suivante dans votre navigateur :
https://VERSION_ID-dot-PROJECT_ID.REGION_ID.r.appspot.com
Remplacez les éléments suivants :
VERSION_ID
: nouvelle version de l'application que vous avez déployée précédemment. Pour obtenir la liste des versions, utilisez la commandegcloud app versions list
. Le dernier élément default de version de service correspond au déploiement le plus récent.PROJECT_ID
: ID de votre projet Google Cloud.REGION_ID
: code attribué par App Engine à votre application
Si le déploiement a réussi, les éléments suivants s'affichent :
Migrer le trafic vers une nouvelle version
Enfin, dirigez le trafic vers la version nouvellement déployée à l'aide de la commande suivante :
gcloud app services set-traffic default --splits [YOUR-VERSION]=1
La nouvelle version de l'application est désormais accessible à travers l'URL suivante :
https://PROJECT_ID.REGION_ID.r.appspot.com
Lire les journaux App Engine
Maintenant que vous avez déployé votre application Rails, vous souhaiterez peut-être en consulter les journaux. Vous pouvez lire les journaux d'une application à l'aide de l'explorateur de journaux situé dans Google Cloud Console.
Pour en savoir plus, consultez la section consacrée à la lecture des journaux à l'aide de la CLI gcloud.
Effectuer un nettoyage des ressources
Une fois le tutoriel terminé, vous pouvez procéder au nettoyage des ressources que vous avez créées afin qu'elles ne soient plus comptabilisées dans votre quota et qu'elles ne vous soient plus facturées. Dans les sections suivantes, nous allons voir comment supprimer ou désactiver ces ressources.
Supprimer le projet
Le moyen le plus simple d'empêcher la facturation est de supprimer le projet que vous avez créé pour ce tutoriel.
Pour supprimer le projet :
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Supprimer une version App Engine
Pour supprimer une version d'application :
- In the Google Cloud console, go to the Versions page for App Engine.
- Select the checkbox for the non-default app version that you want to delete.
- Pour supprimer la version de l'application, cliquez sur Supprimer.
Supprimer une instance Cloud SQL
Pour supprimer une instance Cloud SQL :
- In the Google Cloud console, go to the Instances page.
- Click the name of the SQL instance you that want to delete.
- To delete the instance, click Delete, and then follow the instructions.
Étape suivante
Découvrez comment exécuter l'exemple d'application Ruby Bookshelf dans l'environnement flexible App Engine.
Découvrez comment exécuter l'exemple d'application Ruby Bookshelf sur Compute Engine.
Découvrez comment exécuter l'exemple d'application Ruby Bookshelf sur Google Kubernetes Engine.