L'environnement d'exécution Ruby est la pile logicielle chargée d'installer le code et les dépendances de votre application, puis d'exécuter cette application dans l'environnement flexible.
La version
3.2
est conçue à l'aide de packs de création, ce qui nécessite de choisir un système d'exploitation dans votre fichierapp.yaml
. Par exemple, pour utiliser Ruby 3.2, vous devez spécifier Ubuntu 22 comme système d'exploitation.Les versions
3.1
et antérieures sont créées à l'aide de Docker.
Pour obtenir la liste complète des versions Ruby compatibles, ainsi que la version d'Ubuntu correspondante, consultez la page Programmation de la compatibilité avec l'environnement d'exécution.
Interpréteur
Nouvelles versions de l'environnement d'exécution
Pour la version 3.2, vous devez inclure les paramètres runtime_config
et operating_system
dans votre fichier app.yaml
pour spécifier un système d'exploitation.
Pour utiliser Ruby 3.2, vous devez :
Spécifiez une version de Ruby dans
Gemfile
.RUBY VERSION ruby 3.2.x
Installez gcloud CLI version 420.0.0 ou ultérieure. Vous pouvez mettre à jour les outils de la CLI en exécutant la commande
gcloud components update
. Pour afficher la version installée, vous pouvez exécuter la commandegcloud version
.Spécifiez le paramètre
operating_system
dans votre fichierapp.yaml
:runtime: ruby env: flex runtime_config: operating_system: "ubuntu22"
Vous pouvez éventuellement spécifier une version de l'interpréteur Ruby à l'aide d'un fichier .ruby-version
dans le répertoire de votre application. Par exemple :
Versions précédentes
Pour l'environnement d'exécution Ruby version 3.1 et antérieure, spécifiez une version de l'interpréteur Ruby à l'aide d'un fichier .ruby-version
dans le répertoire de votre application.
Lorsque ce fichier est présent, l'environnement d'exécution installe la version de Ruby demandée à l'aide de rbenv lors du déploiement de votre application. Si la version demandée ne peut pas être installée, App Engine affiche un message d'erreur au moment du déploiement.
Si vous ne fournissez pas de fichier .ruby-version
, l'environnement d'exécution Ruby utilise par défaut la version 2.7. Notez que la valeur par défaut peut changer à tout moment. Il est donc recommandé que votre application spécifie une version de Ruby.
Dépendances
L'environnement d'exécution recherche un fichier Gemfile
dans le répertoire source de votre application et, avant de démarrer cette dernière, il utilise Bundler
pour installer les dépendances. Pour en savoir plus sur la déclaration et la gestion des packages, consultez la page Utiliser les bibliothèques Ruby.
Utiliser les bibliothèques C avec Ruby
Pour les bibliothèques Ruby nécessitant des extensions C, les en-têtes correspondant à la version actuelle de Ruby ainsi que les packages Ubuntu suivants sont préinstallés sur le système :
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
Ces packages permettent d'installer les bibliothèques Ruby les plus populaires. Si votre application nécessite des dépendances supplémentaires au niveau du système d'exploitation, vous devrez installer les packages appropriés dans un environnement d'exécution personnalisé basé sur cet environnement d'exécution.
Démarrage de l'application
L'environnement d'exécution démarre l'application à l'aide de l'élément entrypoint
défini dans app.yaml
. Le point d'entrée doit démarrer un processus qui répond aux requêtes HTTP sur le port défini par la variable d'environnement PORT
.
Exemple :
entrypoint: bundle exec rails server -p $PORT
La plupart des applications Web utilisent un serveur Web compatible avec Rack, tel que Puma, Unicorn ou Thin.
Vous devez ajouter le serveur en tant que dépendance dans le fichier de configuration Gemfile
de votre application. L'environnement d'exécution installe toutes les dépendances avant que votre point d'entrée ne soit appelé.
source "https://rubygems.org"
gem "rack"
gem "puma"
Exemple de point d'entrée utilisant puma pour une application Rails :
entrypoint: bundle exec rails server Puma -p $PORT
Exemple de point d'entrée utilisant puma pour une application Rack :
entrypoint: bundle exec rackup -s Puma -p $PORT
Pour les applications capables de traiter des requêtes sans serveur Rack, vous pouvez simplement exécuter un script Ruby :
entrypoint: bundle exec ruby app.rb
Étendre l'environnement d'exécution
Vous pouvez utiliser des environnements d'exécution personnalisés pour ajouter des fonctionnalités à une application Ruby exécutée dans l'environnement flexible App Engine. Pour configurer un environnement d'exécution personnalisé, remplacez la ligne suivante dans votre fichier app.yaml
:
runtime: ruby
par ce qui suit :
runtime: custom
Vous devez également ajouter les fichiers Dockerfile
et .dockerignore
dans le même répertoire que celui contenant le fichier app.yaml
.
Pour découvrir comment définir un fichier Dockerfile dans un environnement d'exécution personnalisé, consultez la documentation sur les environnements d'exécution personnalisés.
Variables d'environnement
Les variables d'environnement suivantes sont définies par l'environnement d'exécution :
Variable d'environnement | Description |
---|---|
GAE_INSTANCE |
Le nom de l'instance actuelle. |
GAE_MEMORY_MB |
La quantité de mémoire disponible pour le processus d'application. |
GAE_SERVICE |
Nom du service spécifié dans le fichier app.yaml de votre application. Si aucun nom de service n'est spécifié, il est défini sur default . |
GAE_VERSION |
Libellé de version de l'application en cours. |
GOOGLE_CLOUD_PROJECT |
ID du projet associé à votre application, visible dans Google Cloud Console. |
PORT |
Port qui reçoit les requêtes HTTP. |
RACK_ENV |
Variable définie sur production . |
RAILS_ENV |
Variable définie sur production . |
RAILS_SERVE_STATIC_FILES |
Variable définie sur true . |
Vous pouvez définir des variables d'environnement supplémentaires à l'aide du fichier app.yaml
.
Serveur de métadonnées
Chaque instance de votre application peut utiliser le serveur de métadonnées Compute Engine pour rechercher des informations sur l'instance, y compris son nom d'hôte, son adresse IP externe, son ID d'instance, ses métadonnées personnalisées et ses informations de compte de service. App Engine ne vous permet pas de définir des métadonnées personnalisées pour chaque instance, mais vous pouvez définir des métadonnées personnalisées à l'échelle du projet et les lire à partir de vos instances App Engine et Compute Engine.
Cet exemple de fonction utilise le serveur de métadonnées afin d'obtenir une adresse IP externe pour les instances exécutant les versions 3.1 et antérieures de l'environnement d'exécution Ruby, ainsi que pour les instances exécutant les versions 3.2 et ultérieures.
Notez que vous devez mettre à jour votre fichier app.yaml
pour utiliser la nouvelle version. Pour en savoir plus sur l'utilisation des nouveaux environnements d'exécution, consultez la page Environnement d'exécution Ruby.