Cómo ejecutar Rails 7 en el entorno flexible de App Engine

Comienza a desarrollar apps de Ruby on Rails que se ejecuten en el entorno flexible de App Engine. Las apps que crees se ejecutarán en la misma infraestructura que impulsa todos los productos de Google, ten la confianza de que escalarán para atender a todos tus usuarios, sin importar si son unos pocos o millones.

Para este instructivo, suponemos que conoces el desarrollo web con Rails. Este te guía a través de la implementación de una aplicación de Rails nueva.

Este instructivo admite y requiere Ruby 3.0 o una versión posterior.

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud . Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Instala Google Cloud CLI.

  7. Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.

  8. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init

Configura el entorno local para Rails

Para configurar tu entorno local para el desarrollo de Rails, deberás hacer lo siguiente:

  1. Instala la versión 3.0 o posterior de Ruby.

  2. Instala la gema de Rails 7.

  3. Instala la gema de Bundler.

De manera alternativa, puedes usar Cloud Shell, que incluye Ruby, Rails y Google Cloud CLI instalados.

Para obtener información adicional sobre la instalación de Rails y sus dependencias, consulta la guía oficial Comenzar a usar Rails.

Una vez que completes los requisitos, puedes crear e implementar una app de Rails. En las secciones siguientes, se te guiará para configurar, ejecutar e implementar una app.

Crea una app nueva

  1. Crea una app de muestra de Rails nueva.

    rails new appengine_example
    
  2. Ve al directorio que contiene el código de muestra.

    cd appengine_example
    

Ejecuta la app de forma local

Para ejecutar la app de Rails nueva en tu computadora local, haz lo siguiente:

  1. Inicia un servidor web local.

     bundle exec rails server
    
  2. En tu navegador, ve a http://localhost:3000/.

    La app de ejemplo muestra el logotipo de Rails con las versiones de Rails y Ruby.

Agrega una página sencilla

Ahora, agrega una página de bienvenida a la app de Rails que generaste.

  1. A fin de generar la estructura para una página nueva, crea un controlador de Rails nuevo llamado WelcomeController con una acción index.

    bundle exec rails generate controller Welcome index
    
  2. Abre el archivo app/views/welcome/index.html.erb para ver la siguiente plantilla HTML.

    <h1>Welcome#index</h1>
    <p>Find me in app/views/welcome/index.html.erb</p>
  3. Modifica el archivo según prefieras. Por ejemplo, puedes usar el contenido siguiente:

    <h1>Welcome</h1>
    <p>This is a home page for a new Rails App on Google Cloud Platform!</p>
  4. Configura la acción index del controlador como la acción raíz de Rails. Luego, cada vez que un usuario visite la app de Rails, verá tu página de bienvenida.

  5. Abre el archivo config/routes.rb para ver el siguiente contenido autogenerado.

    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. Para modificar este archivo, agrega 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. Guarde y cierre el archivo. Prueba la app de Rails como lo hiciste antes.

Implementa la app en el entorno flexible de App Engine

El entorno flexible de App Engine usa un archivo llamado app.yaml. para describir la configuración de implementación de una app. Si este archivo no está presente, la gcloud CLI intentará predecir la configuración de implementación. Sin embargo, se recomienda proporcionar este archivo, ya que Rails requiere una clave secreta en un entorno de production.

A fin de configurar la app de muestra para tu implementación en App Engine, crea un archivo nuevo llamado app.yaml en la raíz del directorio de tu aplicación de muestra y agrega lo siguiente:

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

Configura la clave secreta de Rails

Cuando implementes una app de Rails en el entorno de producción, configura la variable de entorno SECRET_KEY_BASE en una clave secreta que se utiliza para proteger los datos de sesión del usuario. Esta variable de entorno se lee en el archivo config/secrets.yml.

  1. Genera una clave secreta nueva.

    bundle exec rails secret
    
  2. Copia la clave secreta generada. Debes usar la clave secreta en el siguiente paso.

  3. Abre el archivo app.yaml que creaste anteriormente y agrega una sección env_variables. env_variables configura variables de entorno en el entorno production en el entorno flexible de App Engine. Tu app.yaml debería verse como el ejemplo a continuación, con [SECRET_KEY] reemplazado por la clave secreta copiada.

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

Configura una app en el entorno flexible de App Engine

Si es la primera vez que implementas una app, debes crear una para el entorno flexible de App Engine que te ayude a seleccionar la región en la que deseas ejecutar la app de Rails. Obtén más información sobre las regiones y zonas.

  1. Crea una app de App Engine. De forma predeterminada, el siguiente comando crea dos instancias:

    gcloud app create
    
  2. Selecciona una región que admita el entorno flexible de App Engine para apps de Ruby.

Implementa el entorno flexible de App Engine

Para implementar la app de ejemplo, ejecuta el siguiente comando:

gcloud app deploy

Espera a que aparezca el mensaje que informa que la actualización se completó. Esto puede tardar varios minutos.

Accede a la app de Rails implementada

  1. Para recuperar el ID de tu proyecto, ejecuta gcloud info.

  2. En el navegador, ingresa la siguiente URL:

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

    Reemplaza lo siguiente:

Se muestra el siguiente contenido.

Captura de pantalla de la app de Rails nueva en ejecución

Esta vez, la app de Rails que se ejecuta en el entorno flexible de App Engine es la que atiende tu solicitud.

Este comando implementa la app como se describe en app.yaml y configura la versión recién implementada como la versión predeterminada, lo que hace que entregue todo el tráfico nuevo. A medida que la app se implementa, es posible que veas varios mensajes repetidos mientras que la plataforma verifica si la app está atendiendo. Esto es normal. Espera a que aparezca el mensaje que informa que la actualización de la app se completó.

Si actualizas tu app, podrás implementar la versión actualizada mediante el mismo comando que usaste para implementar la app por primera vez. La implementación nueva crea una versión nueva de tu app y la convierte en la versión predeterminada. Las versiones anteriores de la app se conservan, al igual que sus instancias de VM asociadas. Ten en cuenta que todas estas instancias de VM y versiones de la app son recursos facturables.

Lee los registros de App Engine

Ahora que implementaste tu app de Rails, te recomendamos leer los registros. Puedes leer los registros de la app con el Explorador de registros ubicado en la consola de Google Cloud o con gcloud app logs read. Puedes obtener más información para leer registros con la CLI de gcloud.

Limpia los recursos

Una vez que termines el instructivo, puedes limpiar los recursos que creaste para que dejen de usar la cuota y generar cargos. En las siguientes secciones, se describe cómo borrar o desactivar estos recursos.

Borrar proyecto

La manera más fácil de eliminar la facturación es borrar el proyecto que creaste para el instructivo.

Para borrar el proyecto, sigue estos pasos:

  1. En la Google Cloud consola, ve a la página Administrar recursos.

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

Borra una versión de App Engine

Para borrar la versión de una aplicación, haz lo siguiente:

  1. En la consola de Google Cloud , ve a la página Versiones de App Engine.

    Ir a Versiones

  2. Selecciona la casilla de verificación de la versión no predeterminada de la app que deseas borrar.
  3. Para borrar la versión de la app, haz clic en Borrar.

¿Qué sigue?