Ruby 2.6 y 2.7 ya tienen disponibilidad general.

Entorno de ejecución de Ruby

El entorno de ejecución de Ruby te permite ejecutar tu app en App Engine en un entorno de zona de pruebas. En este documento, se explican los detalles del entorno de ejecución de Ruby, incluidos los encabezados que se proporcionan a tu código y otro tipo de información para implementar de forma correcta la aplicación en App Engine.

Especifica el entorno de ejecución de Ruby para App Engine en el entorno estándar del archivo app.yaml como ruby27:

runtime: ruby27 # or another supported version

Versión de Ruby

El entorno de ejecución de Ruby es compatible con Ruby 2.5, Ruby 2.6 y Ruby 2.7, y usa la última versión estable de la versión estable que se especifica en tu archivo app.yaml. App Engine se actualiza de forma automática a las nuevas versiones de actualización de parche, pero no se actualizará automáticamente a las versiones secundarias.

Por ejemplo, tu aplicación puede estar implementada en Ruby 2.6.0 y actualizarse de forma automática a la versión 2.6.1 en una implementación posterior, pero no se actualizará de manera automática a Ruby 2.7.

Dependencias

Para obtener más información sobre la declaración y la administración de dependencias, consulta Especifica dependencias.

Inicio de la aplicación

El entorno de ejecución inicia la aplicación mediante el entrypoint definido en app.yaml. El punto de entrada debería iniciar un proceso que responda a solicitudes HTTP en el puerto definido por la variable de entorno PORT. Por ejemplo:

entrypoint: bundle exec rails server -p $PORT

La mayoría de las aplicaciones web usan un servidor web compatible con Rack, como Puma, Unicorn o Thin.

Debes agregar el servidor como una dependencia en el archivo de configuración Gemfile de tu aplicación. El entorno de ejecución instalará todas las dependencias antes de que se llame al punto de entrada.

source "https://rubygems.org"

gem "rack"
gem "puma"

Este es un ejemplo de un punto de entrada que usa Puma para una aplicación Rails:

entrypoint: bundle exec rails server Puma -p $PORT

Este es un ejemplo de un entrypoint que usa puma para cualquier aplicación Rack:

entrypoint: bundle exec rackup -s Puma -p $PORT

Para las aplicaciones que pueden controlar solicitudes sin un servidor de Rack, solo puedes ejecutar una secuencia de comandos de Ruby:

entrypoint: bundle exec ruby app.rb

Variables de entorno

El entorno de ejecución configura las siguientes variables del entorno:

Variable del entorno Descripción
GAE_APPLICATION ID de tu aplicación de App Engine. Este ID tiene el prefijo “region code~”, como “e~”, para aplicaciones implementadas en Europa.
GAE_DEPLOYMENT_ID ID de la implementación actual.
GAE_ENV Entorno de App Engine. Se define en standard.
GAE_INSTANCE ID de la instancia en la que se está ejecutando tu servicio.
GAE_MEMORY_MB Cantidad de memoria disponible para el proceso de la aplicación, en MB.
GAE_RUNTIME Entorno de ejecución especificado en el archivo app.yaml.
GAE_SERVICE Nombre de servicio especificado en el archivo app.yaml. Si no se especifica un nombre de servicio, se asigna default.
GAE_VERSION Etiqueta de la versión actual de tu servicio.
GOOGLE_CLOUD_PROJECT ID del proyecto de Cloud asociado a tu aplicación.
PORT Puerto que recibe las solicitudes HTTP.

Puedes definir variables de entorno adicionales en tu archivo app.yaml, pero los valores anteriores no se pueden anular.

Proxies HTTPS y de reenvío

App Engine finaliza las conexiones HTTPS en el balanceador de cargas y reenvía las solicitudes a tu aplicación. Algunas aplicaciones deben determinar la IP y el protocolo de la solicitud original. La dirección IP del usuario está disponible en el encabezado X-Forwarded-For estándar. Las aplicaciones que necesitan esta información deben configurar sus frameworks web para que confíen en el proxy.

Sistema de archivos

El entorno de ejecución incluye un directorio /tmp que admite escritura, y todos los demás directorios tienen acceso de solo lectura. Escribir en /tmp ocupa la memoria del sistema. Para obtener más información, consulta la documentación de TempDir y TempFile.

Servidor de metadatos

Cada instancia de tu aplicación puede usar el servidor de metadatos de App Engine para consultar información acerca de la instancia y de tu proyecto.

Puedes acceder al servidor de metadatos a través de los siguientes extremos:

  • http://metadata
  • http://metadata.google.internal

La siguiente tabla enumera los extremos en los que puedes realizar solicitudes HTTP para metadatos específicos:

Extremo de metadatos Descripción
/computeMetadata/v1/project/numeric-project-id El número de proyecto asignado a tu proyecto.
/computeMetadata/v1/project/project-id El ID del proyecto asignado a tu proyecto.
/computeMetadata/v1/instance/zone La zona en la que se está ejecutando la instancia.
/computeMetadata/v1/instance/service-accounts/default/aliases
/computeMetadata/v1/instance/service-accounts/default/email El correo electrónico de la cuenta de servicio predeterminada asignado a tu proyecto.
/computeMetadata/v1/instance/service-accounts/default/ Enumera todas las cuentas de servicio predeterminadas para tu proyecto.
/computeMetadata/v1/instance/service-accounts/default/scopes Enumera todos los alcances compatibles para las cuentas de servicio predeterminadas.
/computeMetadata/v1/instance/service-accounts/default/token Muestra el token de autenticación que puede usarse para autenticar tu aplicación en otras API de Google Cloud.

Por ejemplo, para recuperar tu ID del proyecto, envía una solicitud a http://metadata.google.internal/computeMetadata/v1/project/project-id.