Exécuter Rails 5 dans l'environnement flexible App Engine

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. L'objectif est ici de vous guider lors du déploiement d'une nouvelle application Rails.

Ce tutoriel nécessite Ruby versions 2.6 ou 2.7.

Avant de commencer

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  4. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  5. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  6. Installez Google Cloud CLI.
  7. Pour initialiser gcloudCLI, exécutez la commande suivante :

    gcloud init

Configurer votre environnement local pour Rails

Pour configurer votre environnement local pour le développement Rails, procédez comme suit :

  1. Installez Ruby versions 2.6 ou 2.7.

  2. Installez le gem Rails 5.

  3. Installez le gem Bundler.

Vous pouvez également utiliser Cloud Shell, qui comprend déjà Ruby, Rails et Google Cloud CLI.

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. Les sections suivantes vous guident dans la configuration, l'exécution et le déploiement d'une application.

Créer une application

  1. Créez un exemple d'application Rails.

    rails new appengine_example
    
  2. Accédez au répertoire qui contient l'exemple de code.

    cd appengine_example
    

Exécuter l'application en local

Pour exécuter la nouvelle application Rails sur votre ordinateur local :

  1. Installez les dépendances en utilisant Bundler :

     bundle install
    
  2. Démarrez un serveur Web local :

     bundle exec rails server
    
  3. Dans votre navigateur, accédez à http://localhost:3000/.

Le message "Yay! You’re on Rails!" de l'exemple d'application s'affiche sur la page.

Capture d'écran de la nouvelle application Rails en cours d'exécution

Ajouter une page simple

Ajoutez maintenant une page de bienvenue à l'application Rails générée.

  1. Pour générer le scaffold d'une nouvelle page, créez un contrôleur Rails nommé WelcomeController avec une action index.

    bundle exec rails generate controller Welcome index
    
  2. Ouvrez le fichier app/views/welcome/index.html.erb pour afficher le code HTML réutilisable suivant.

    <h1>Welcome#index</h1>
    <p>Find me in app/views/welcome/index.html.erb</p>
  3. Modifiez le fichier comme vous le souhaitez. Par exemple, vous pouvez utiliser le contenu suivant :

    <h1>Welcome</h1>
    <p>This is a home page for a new Rails App on Google Cloud Platform!</p>
  4. Définissez l'action de contrôleur index comme action racine pour Rails. Dès lors, chaque fois qu'un utilisateur visite l'application Rails, il voit votre page de bienvenue.

  5. Ouvrez le fichier config/routes.rb pour voir le contenu généré, reproduit ci-dessous.

    Rails.application.routes.draw do
      get 'welcome/index'
    
      # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
    end
  6. Pour modifier ce fichier, ajoutez root 'welcome#index'.

    Rails.application.routes.draw do
      get 'welcome/index'
    
      # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
      root 'welcome#index'
    end
  7. Enregistrez le fichier, puis fermez-le. Testez l'application Rails comme vous l'avez fait précédemment.

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 est absent, la CLI gcloud tente de deviner la configuration de déploiement. Nous vous recommandons toutefois de fournir ce fichier, car Rails nécessite une clé secrète dans un environnement de production.

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 votre exemple d'application et ajoutez-y les lignes suivantes :

entrypoint: bundle exec rackup --port $PORT
env: flex
runtime: ruby

Configurer la clé secrète Rails

Lorsque vous déployez une application Rails dans l'environnement de production, définissez la variable d'environnement SECRET_KEY_BASE en indiquant une clé secrète utilisée pour protéger les données de session de l'utilisateur. Cette variable d'environnement est lue dans le fichier config/secrets.yml.

  1. Générez une nouvelle clé secrète.

    bundle exec rails secret
    
  2. Copiez la clé secrète générée. Vous l'utiliserez à l'étape suivante.

  3. Ouvrez le fichier app.yaml que vous avez créé précédemment et ajoutez une section env_variables. env_variables définit les variables d'environnement dans l'environnement de production de l'environnement flexible App Engine. Votre fichier app.yaml devrait ressembler à l'exemple ci-dessous, avec la clé secrète à la place de l'espace réservé [SECRET_KEY].

    entrypoint: bundle exec rackup --port $PORT
    env: flex
    runtime: ruby
    
    env_variables:
      SECRET_KEY_BASE: [SECRET_KEY]

Configurer 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 qui vous aidera à sélectionner la région dans laquelle exécuter l'application Rails. Pour en savoir plus, consultez la documentation sur les régions et les zones.

  1. Créez une application App Engine. Par défaut, la commande suivante crée deux instances:

    gcloud app create
    
  2. Sélectionnez une région compatible avec l'environnement flexible App Engine pour les applications Ruby.

Effectuer un déploiement dans l'environnement flexible App Engine

Déployez l'exemple d'application en exécutant la commande suivante :

gcloud app deploy

Attendez le message vous informant que la mise à jour est terminée. Cette opération peut prendre plusieurs minutes.

Accéder à l'application Rails déployée

  1. Pour récupérer votre ID de projet, exécutez la commande gcloud info.

  2. Dans votre navigateur Web, saisissez l'URL suivante :

    https://PROJECT_ID.REGION_ID.r.appspot.com

    Remplacez les éléments suivants :

Le contenu suivant s'affiche.

Capture d'écran de la nouvelle application Rails en cours d'exécution

Cette fois, votre requête est traitée par l'application Rails s'exécutant dans l'environnement flexible App Engine.

Cette commande déploie l'application conformément aux instructions du fichier app.yaml, et définit la version nouvellement déployée comme version par défaut, de sorte que celle-ci diffuse tout le nouveau trafic. Lors du déploiement de l'application, certains messages risquent de s'afficher plusieurs fois pendant que la plate-forme vérifie si l'application est en service. Ceci est normal. Attendez le message indiquant que la mise à jour de l'application est terminée.

Pour mettre à jour l'application, vous pouvez déployer la version à jour en saisissant la même commande que celle utilisée pour le premier déploiement. Le nouveau déploiement crée une nouvelle version de votre application, qui est alors définie comme version par défaut. Les anciennes versions de votre application sont conservées, tout comme les instances de VM associées. Sachez que toutes ces versions d'application et instances de VM sont des ressources facturables.

Lire les journaux App Engine

Maintenant que vous avez déployé votre application Rails, vous voudrez peut-être en consulter les journaux. Vous pouvez lire les journaux d'application à l'aide de l'explorateur de journaux situé dans Google Cloud Console ou en utilisant gcloud app logs read. Pour en savoir plus sur la lecture des journaux, utilisez 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 :

  1. Dans la console Google Cloud, accédez à la page Gérer les ressources.

    Accéder à la page Gérer les ressources

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

Supprimer une version App Engine

Pour supprimer une version d'application :

  1. Dans la console Google Cloud, accédez à la page Versions pour App Engine.

    Accéder à la page "Versions"

  2. Cochez la case correspondant à la version de l'application autre que celle par défaut que vous souhaitez supprimer.
  3. Pour supprimer la version de l'application, cliquez sur  Supprimer.

Étapes suivantes