Cómo ejecutar Rails 5 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.

Para este instructivo debes tener Ruby 2.6 o 2.7.

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. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  4. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  5. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  6. Instala Google Cloud CLI.
  7. Para inicializar la CLI de gcloud, ejecuta el siguiente comando:

    gcloud init

Configura el entorno local para Rails

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

  1. Instala la versión 2.6 o 2.7 de Ruby.

  2. Instala la gema de Rails 5.

  3. Instala la gema de Bundler.

Como alternativa, puedes usar Cloud Shell, que incluye Ruby, Rails y la CLI de Google Cloud.

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. Instala las dependencias con Bundler.

     bundle install
    
  2. Inicia un servidor web local.

     bundle exec rails server
    
  3. En tu navegador, ve a http://localhost:8000.

El mensaje: ¡Bien, ya estás en Rails! de la app se muestra en la página.

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

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 el siguiente código HTML estándar.

    <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 generado.

    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. Guarda el archivo y ciérralo. 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 CLI de gcloud intenta adivinar 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 antes y agrega una sección env_variables. El env_variables configura las variables del 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 aplicación 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

Implementa la app de muestra mediante la ejecución del 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 del 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 mediante el Explorador de registros ubicado en Google Cloud Console o mediante gcloud app logs read. Puedes obtener más información sobre cómo leer registros mediante 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, haga lo siguiente:

  1. En la consola de Google Cloud, 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?