Primeros pasos con Ruby

Este instructivo está destinado a aquellos que estén comenzando a compilar aplicaciones en la nube, como ingenieros y desarrolladores web, que quieran aprender conceptos clave del desarrollo de aplicaciones y aplicarlos a Google Cloud.

Objetivos

Costos

En este documento, usarás los siguientes componentes facturables de Google Cloud:

Las instrucciones de este documento están diseñadas para que el uso de los recursos se mantenga dentro de los límites del nivel Siempre gratuito de Google Cloud. Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios. Es posible que los usuarios nuevos de Google Cloud califiquen para obtener una prueba gratuita.

Cuando finalices las tareas que se describen en este documento, puedes borrar los recursos que creaste para evitar que continúe la facturación. Para obtener más información, consulta Cómo realizar una limpieza.

Antes de comenzar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure 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.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Para crear una base de datos de Firestore en modo nativo, sigue los pasos a continuación:
    1. En Google Cloud Console, ve a la página Visualizador de Firestore.
      Ir al visualizador de Firestore
    2. En la pantalla Seleccionar un modo de Cloud Firestore, haz clic en Seleccionar modo nativo.
    3. Selecciona una ubicación para tu base de datos de Firestore. Esta configuración corresponde a la ubicación predeterminada de los recursos de Google Cloud que definiste en el 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 bucket predeterminado de Cloud Storage y la aplicación de App Engine.
    4. Haga clic en Crear base de datos.
  7. Enable the App Engine Admin, Cloud Storage, Cloud Logging, and Error Reporting APIs.

    Enable the APIs

  8. Clona el repositorio de muestra y abre la aplicación de muestra en Cloud Shell:
    Ir a Cloud Shell

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

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

    # Configure gcloud for your project
    gcloud config set project PROJECT_ID

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

    Google Cloud CLI 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 de gcloud para implementar y supervisar tu aplicación.

Ejecuta tu app

  1. Instala las dependencias de la app con 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 tu app en ejecución.

Implementa tu aplicación en App Engine

Google Cloud ofrece varias opciones para ejecutar tu código. Para este ejemplo, usa App Engine a fin de implementar una aplicación 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 cuenta con el ajuste de escala automático para admitir incrementos 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. En la ventana de la terminal, implementa la aplicación en App Engine con la CLI 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 Bookshelf

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

Conserva 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 su lugar, debes usar una base de datos en la que todas tus instancias puedan realizar operaciones de lectura y escritura.

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 de manera automática para cumplir las necesidades de tu aplicación y escala a cero cuando no la estás usando. Agrega el primer libro.

  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, ingresa Moby Dick.
  4. En el campo Author, ingresa Herman Melville.
  5. Haz clic en Guardar. Ya tienes una entrada en la aplicación Bookshelf.

    Entrada de Moby Dick en la app Bookshelf
  6. En Google Cloud Console, para actualizar la página de Firestore, haz clic en Actualizar . 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. Para los propósitos de este instructivo, la colección se llama “books”. 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 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 puedes 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 bucket de Cloud Storage, un contenedor básico en el que se guardan tus datos.

  1. En la consola de Google Cloud, ve a la página Navegador de Cloud Storage.

    Ir a la página Navegador de Cloud Storage

  2. Haga clic en Crear bucket.
  3. En el cuadro de diálogo Crear bucket, adjunta el ID del proyecto de Google Cloud a la string _bucket para ingresar un nombre del bucket, de manera que sea similar a YOUR_PROJECT_ID_bucket. Este nombre está sujeto a los requisitos de nombres de los buckets. En el resto de los campos, se pueden conservar los valores predeterminados.
  4. Haga clic en Crear.
  5. Una vez que se haya creado el bucket, debe permitirse el acceso público a los objetos para que puedan consultarlos los usuarios. Si quieres permitir el acceso público a tus objetos, consulta el artículo Haz públicos los datos.
  6. Haz clic en Edit book y selecciona una imagen para subirla como la portada del libro. Por ejemplo, puedes usar esta imagen de dominio público:
    Portada de Moby Dick
  7. Haz clic en Save. Se te redireccionará a la página principal, en la que encontrarás una entrada a la app de Bookshelf.
    Entrada de Moby Dick en la app Bookshelf

La aplicación 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 con Google Cloud's operations suite

Ya implementaste la app 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

Google Cloud Console

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

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

    Se 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!”.

  2. Ve al Visor de registros, donde puedes supervisar tu aplicación 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 Google Cloud CLI para supervisar los registros de la app mediante la escucha de nuevas entradas de registro:

    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

    Se 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!”.

    En el resultado del comando gcloud, se puede ver 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!"

Supervisa los errores con Error Reporting

  1. En Google Cloud Console, ve a la página Error Reporting.
    Ir a la página Error Reporting
    Error Reporting destaca los errores y las excepciones de la app y te permite configurar alertas basadas en ellos.
  2. En el navegador, ve a la URL /errors de tu aplicación.
    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 Google Cloud Console, regresa a la página Error Reporting y verás 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.

Realiza una limpieza

Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.

Borra el proyecto

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

¿Qué sigue?