Comienza a usar Ruby

Este instructivo está dirigido a personas que no tengan experiencia en la compilación de apps en la nube, como ingenieros o desarrolladores web, y quieran aprender los conceptos básicos del desarrollo de apps mientras los aplican en Google Cloud.

Objetivos

Si deseas ver instructivos específicos sobre lenguajes para compilar aplicaciones, consulta las siguientes guías:

Costos

En este instructivo, se usan los siguientes componentes facturables de Google Cloud:

El instructivo está diseñado para que puedas mantener el uso de los recursos dentro de los límites del nivel Siempre gratuito de Google Cloud. Para generar una estimación de costos en función del uso proyectado, usa la calculadora de precios. Es posible que los usuarios nuevos de Google Cloud califiquen para obtener una prueba gratuita.

Cuando finalices este instructivo, podrás borrar los recursos creados para evitar que se te siga facturando. Para obtener más información, consulta cómo hacer una limpieza.

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 Selector 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. Para crear una base de datos de Firestore en modo nativo, sigue los pasos a continuación:
    1. En Cloud Console, dirígete a la página del visualizador de Firestore.
      Ir al visualizador de Firestore
    2. Desde la pantalla Seleccionar un modo de Firestore, haz clic en Seleccionar modo nativo.
    3. Selecciona una ubicación para tu base de datos de Firestore. Esta configuración de la ubicación corresponde a la ubicación predeterminada de los recursos de Google Cloud para tu proyecto de Cloud. La configuración de la ubicación se usa en los servicios de Google Cloud del proyecto que la requieren; en particular, el depósito predeterminado de Cloud Storage y la aplicación de App Engine.
    4. Haz clic en Crear base de datos.
  5. Habilita las API de App Engine Admin, Cloud Storage, Cloud Logging, and Error Reporting.

    Habilita las API

  6. En Cloud Shell, abre el código fuente de la app.
    Ir a Cloud Shell

    Cloud Shell brinda acceso de línea de comandos a tus recursos de Google Cloud directamente desde el navegador.

  7. Para descargar el código de muestra y cambiar al directorio de la aplicación, haz clic en Continuar.
  8. En Cloud Shell, configura la herramienta de gcloud para que use tu proyecto de Google Cloud nuevo de la siguiente manera:

        # Configure gcloud for your project
        gcloud config set project PROJECT_ID
        

    Reemplaza PROJECT_ID con el ID del proyecto de Google Cloud que creaste con Cloud Console.

    La herramienta de línea de comandos de gcloud es la forma principal en la que interactúas con tus recursos de Google Cloud desde la línea de comandos. En este instructivo, usarás la herramienta gcloud para implementar y supervisar tu aplicación.

Ejecuta la app

  1. Instala las dependencias de la app mediante bundler:

    bundle install
        

  2. Ejecuta el comando rails server:
        GOOGLE_CLOUD_PROJECT=PROJECT_ID bundle exec rails server -p 8080
        
    Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud que creaste.
  3. En Cloud Shell, haz clic en Vista previa en la Web y selecciona Vista previa en el puerto 8080. Se abrirá una ventana nueva con la app en ejecución.

Implementa la app en App Engine

Google Cloud ofrece varias opciones para ejecutar el código. Para este ejemplo, usa App Engine a fin de implementar una app escalable en Google Cloud. Debido a que App Engine te libera de la necesidad de configurar implementaciones y administrar servidores, puedes enfocarte en escribir código. Además, App Engine escala de forma automática para admitir los aumentos de tráfico repentinos.

El archivo app.yaml es el archivo de configuración principal para implementar en App Engine:

runtime: ruby25
    entrypoint: bundle exec rackup -p $PORT
    instance_class: F2
  1. Implementa la app en App Engine desde la ventana de la terminal con la herramienta de gcloud:

        # on the command-line
        gcloud app deploy
        

  2. En el navegador web, ingresa la siguiente URL:

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

    Reemplaza lo siguiente:

    Página principal de la app de Bookshelf

Para obtener más información sobre la implementación en App Engine, consulta el entorno de ejecución de Ruby 2.5.

Almacena tus datos con Firestore

No se puede almacenar información en tus instancias de App Engine porque se perderá si se reinicia la instancia, además de que no existirá cuando se creen instancias nuevas. En cambio, debes usar una base de datos en la que todas las instancias puedan leer y escribir.

Google Cloud ofrece varias opciones para almacenar tus datos. En este ejemplo, usarás Firestore para almacenar los datos de cada libro. Firestore es una base de datos de documentos NoSQL completamente administrada y sin servidores que te permite almacenar y consultar datos. Firestore escala automáticamente para cumplir las necesidades de tu aplicación y escala a cero cuando no la estás usando. Agrega el primer libro ahora.

  1. En el navegador web, ingresa la siguiente URL:

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

    Reemplaza lo siguiente:

  2. Para crear un libro en tu aplicación implementada, haz clic en Add book (Agregar libro).

    Agrega un libro a la aplicación Bookshelf
  3. En el campo Title (Título), ingresa Moby Dick.
  4. En el campo Author (Autor), ingresa Herman Melville.
  5. Haz clic en Save (Guardar). Ya tienes una entrada en la aplicación Bookshelf.

    Entrada de Moby Dick de la app de Bookshelf
  6. En Cloud Console, haz clic en Actualizar para actualizar la página de Firestore. Los datos aparecen en Firestore. La aplicación Bookshelf almacena cada libro como un documento de Firestore con un ID único, y todos estos documentos se almacenan en una colección de Firestore. A los fines de este instructivo, la colección se llama libros. Ejemplo de un documento de Firestore.

Firestore almacena los libros mediante la biblioteca cliente de Firestore. Aquí hay un ejemplo de recuperación de un documento de Firestore:

require "google/cloud/firestore"
    firestore = Google::Cloud::Firestore.new project_id: project_id
    @collection = firestore.col "books"
book_snapshot = collection.doc(id).get
    Book.from_snapspot book_snapshot if book_snapshot.data

Para obtener más información sobre el uso de Firestore, consulta la página sobre cómo agregar datos a Firestore.

Almacena archivos subidos en Cloud Storage

Ahora que agregaste un libro, es momento de agregar su imagen de portada. No se pueden almacenar archivos en tus instancias. Una base de datos no es la opción correcta para archivos de imagen. En cambio, debes usar Cloud Storage.

Cloud Storage es el almacenamiento de BLOB principal de Google Cloud. Puedes usar Cloud Storage a fin de alojar elementos de aplicaciones que deseas compartir en Google Cloud. Para usar Cloud Storage, debes crear un depósito de Cloud Storage, un contenedor básico en el que se guardan tus datos.

  1. En Cloud Console, ve a la página del navegador de Cloud Storage.

    Ir a la página del navegador de Cloud Storage

  2. Haz clic en Crear depósito.
  3. En el cuadro de diálogo Crear depósito, adjunta el ID del proyecto de Google Cloud a la string _bucket a fin de ingresar un nombre para el depósito, de manera que sea similar a YOUR_PROJECT_ID_bucket. Este nombre está sujeto a los requisitos de nombres de los depósitos. En el resto de los campos, se pueden conservar los valores predeterminados.
  4. Haz clic en Crear.
  5. Una vez que se creó el depósito, haz clic en Edit book (Editar libro) y selecciona una imagen para subir como portada del libro. Por ejemplo, puedes usar esta imagen de dominio público:
    Portada de Moby Dick
  6. Haz clic en Guardar. Se te redireccionará a la página principal, en la que encontrarás una entrada a tu aplicación de Bookshelf.
    Entrada de Moby Dick en la app Bookshelf

La app de Bookshelf envía los archivos subidos a Cloud Storage a través de la biblioteca cliente de Cloud Storage.

require "google/cloud/storage"
    bucket_id = project_id + "_bucket"
    storage = Google::Cloud::Storage.new project_id: config["project_id"],
                                         credentials: config["keyfile"]
    bucket = storage.bucket bucket_id

Para obtener más información sobre cómo usar Cloud Storage, consulta la lista de guías prácticas.

Supervisa tu aplicación mediante el conjunto de aplicaciones de Google Cloud

Implementaste tu aplicación y creaste y modificaste libros. A fin de supervisar estos eventos para los usuarios, usa la administración del rendimiento de las aplicaciones.

Supervisa los registros con Cloud Logging

Cloud Console

  1. En el navegador, ve a la URL /logs en tu app:

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

    Esto envía una entrada personalizada a Cloud Logging. La entrada tiene una gravedad de registro de NOTICE y contiene el mensaje “Hey, you triggered a custom log entry. Good job!" (Activaste una entrada de registro personalizada. ¡Muy bien!).

  2. Ve al Visor de registros, en el que puedes supervisar la app en tiempo real. Cuando algo sale mal, este es uno de los primeros lugares que debes revisar.
    Visor de registros de Cloud Logging
  3. En la lista desplegable de recursos, selecciona GAE Application.
  4. En la lista desplegable de registros, selecciona Todos los registros.

    Verás una fila de tu entrada de registro personalizada.

    Ir al Visor de registros

gcloud

  1. En la ventana de la terminal, usa la herramienta de línea de comandos de gcloud para escuchar las entradas de registro nuevas y supervisar los registros de la app:

    gcloud app logs tail

  2. En el navegador, ve a la URL /logs en tu app:

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

    Esto envía una entrada personalizada a Cloud Logging. La entrada tiene una gravedad de registro de NOTICE y contiene el mensaje “Hey, you triggered a custom log entry. Good job!” (Activaste una entrada de registro personalizada. ¡Muy bien!).

    En el resultado del comando de gcloud, se muestra la entrada de registro nueva:

        Waiting for new log entries...
        2019-03-27 22:17:01 default[20190327t151430]  "Hey, you triggered a custom log entry. Good job!"
        

Controla los errores con Error Reporting

  1. En Cloud Console, ve a la página de Error Reporting.
    Ir a la página de Error Reporting
    Error Reporting destaca los errores y las excepciones en la aplicación y te permite configurar alertas basadas en ellos.
  2. En el navegador, ve a la URL /errors de tu app.
    https://PROJECT_ID.REGION_ID.r.appspot.com/errors

    Esto genera una nueva excepción de prueba y la envía al paquete de operaciones de Google Cloud.

  3. En Cloud Console, regresa a la página de Error Reporting y podrás ver el error nuevo en unos instantes. Haz clic en Volver a cargar automáticamente para no tener que actualizar la página de forma manual.

    Mensaje de error de Error Reporting.

Limpia

Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud Platform por los recursos que usaste en este instructivo:

Borra el proyecto

  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, luego, haz clic en Cerrar para borrar el proyecto.

Pasos siguientes