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.3.3 o posterior.

Antes de comenzar

  1. Accede a tu Cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

  2. En la página de selección de proyectos de Cloud Console, selecciona o crea un proyecto de Cloud.

    Ir a la página Selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud. Obtén información sobre cómo confirmar que tienes habilitada la facturación para tu proyecto.

  4. Instala e inicializa el SDK de Cloud.

Configura el entorno local para Rails

Antes de comenzar, realiza los siguientes pasos:

  1. Instala la versión 2.3.3 de Ruby o una posterior.

  2. Instala la gema de Rails 5.

  3. Instala la gema de Bundler.

De manera alternativa, puedes usar Cloud Shell, que incluye Ruby, Rails, Bundler y el SDK de Cloud instalados.

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

Tras completar los requisitos previos, podrás crear e implementar una app de Rails. En las siguientes secciones, aprenderás a configurar, ejecutar y, luego, implementar una app.

Crea una app nueva

  1. Estructura 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. Para 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 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 herramienta de línea de comandos de gcloud intentará 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.

Para 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. env_variables establece 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 aplicación de App Engine.

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

Implementa el entorno flexible de App Engine

  1. Antes de la implementación, compilar previamente los recursos de Rails:

    RAILS_ENV=production bundle exec rails assets:precompile
    
  2. Una vez que los recursos terminen de compilarse, implementa la muestra.

    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 tu ID del proyecto, ejecuta gcloud info.

  2. En el navegador, ingresa la siguiente URL:

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

    Reemplaza los siguientes elementos:

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.

Con este comando, se implementa la app como se describe en app.yaml y se configura la versión recién implementada como la versión predeterminada, lo que hace que se haga cargo de 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 la app, podrás implementar la versión actualizada mediante el mismo comando que usaste para implementarla 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 Visor de registros ubicado en Cloud Console o mediante gcloud app logs read. Para obtener más información, consulta Leer registros con el SDK de Cloud.

Limpia los recursos

Una vez que termines el instructivo Ejecuta Rails 5 en App Engine, puedes realizar una limpieza de los recursos que creaste en Google Cloud a fin de que no consuman tu cuota y no se te cobre por ellos en el futuro. 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, haz lo siguiente:

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

    Ir a la página Administrar recursos

  2. En la lista de proyectos, selecciona el proyecto que deseas borrar y haz clic en Borrar .
  3. En el cuadro de diálogo, escribe el ID del proyecto y 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 Cloud Console, ve a la página Versiones de App Engine.

    Ir a la página Versiones

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

Qué sigue