Introduzione a Ruby

Questo tutorial è destinato a coloro che non hanno mai creato app nel cloud, ad esempio ingegneri e sviluppatori web che vogliono imparare i concetti chiave di Google Cloud relativi allo sviluppo di app.

Obiettivi

Per altri tutorial sulla creazione di app specifici dei linguaggi di programmazione, consulta queste guide:

Costi

This tutorial uses the following billable components of Google Cloud:

The tutorial is designed to keep your resource usage within the limits of Google Cloud's Always Free tier. To generate a cost estimate based on your projected usage, use the pricing calculator. New Google Cloud users might be eligible for a free trial.

When you finish this tutorial, you can avoid continued billing by deleting the resources you created. For more information, see Cleaning up.

Prima di iniziare

  1. Sign in to your Google Account.

    If you don't already have one, sign up for a new account.

  2. In the Cloud Console, on the project selector page, select or create a Cloud project.

    Go to the project selector page

  3. Verifica che la fatturazione sia attivata per il tuo progetto.

    scopri come attivare la fatturazione

  4. Per creare un database Firestore in modalità Native, segui questa procedura:
    1. In Cloud Console, vai alla pagina Visualizzatore Firestore.
      Vai al visualizzatore Firestore
    2. Dalla schermata Seleziona una modalità Firestore, fai clic su Seleziona modalità Native.
    3. Seleziona una località per il tuo database Firestore. La località impostata corrisponde alla località predefinita delle risorse di Google Cloud per il tuo progetto Cloud . Questa località viene utilizzata per i servizi Google Cloud all'interno del tuo progetto Cloud che richiedono la geolocalizzazione. Nello specifico, si tratta del tuo bucket predefinito di Cloud Storage e della tua app App Engine.
    4. Fai clic su Crea database.
  5. Enable the App Engine Admin, Cloud Storage, Cloud Logging, and Error Reporting APIs.

    Enable the APIs

  6. In Cloud Shell, apri il codice sorgente dell'app.
    Vai a Cloud Shell

    Cloud Shell fornisce l'accesso da riga di comando alle risorse Google Cloud direttamente dal browser.

  7. Per scaricare il codice di esempio e modificarlo nella directory dell'applicazione, fai clic su Continua.
  8. In Cloud Shell, configura lo strumento gcloud in modo da utilizzare il nuovo progetto Google Cloud:

        # Configure gcloud for your project
        gcloud config set project PROJECT_ID
        

    Sostituisci PROJECT_ID con l'ID del progetto Google Cloud che hai creato utilizzando Cloud Console.

    Lo strumento a riga di comando gcloud è il metodo principale per interagire con le risorse Google Cloud dalla riga di comando. In questo tutorial utilizzerai lo strumento gcloud per eseguire il deployment dell'app e per monitorarla.

Eseguire l'app

  1. Installa le dipendenze dell'app utilizzando bundler:

    bundle install
        

  2. Esegui il server Rails:
        GOOGLE_CLOUD_PROJECT=PROJECT_ID bundle exec rails server -p 8080
        
    Sostituisci PROJECT_ID con l'ID del progetto Google Cloud che hai creato.
  3. In Cloud Shell, fai clic su Anteprima web , e seleziona Anteprima sulla porta 8080. Viene visualizzata una nuova finestra che mostra la tua app in esecuzione.

Eseguire il deployment dell'app in App Engine

Google Cloud offre varie opzioni per eseguire il codice. In questo esempio, viene utilizzato App Engine per eseguire il deployment di un'app scalabile in Google Cloud. Grazie ai deployment senza necessità di configurazione e ai server che non richiedono gestione, App Engine ti consente di concentrarti sulla scrittura del codice. Inoltre, App Engine scala automaticamente per supportare picchi di traffico improvvisi.

Il file app.yaml è il file di configurazione principale per eseguire il deployment in App Engine:

runtime: ruby25
    entrypoint: bundle exec rackup -p $PORT
    instance_class: F2
  1. Nella finestra del terminale, esegui il deployment dell'app in App Engine utilizzando lo strumento gcloud:

        # on the command-line
        gcloud app deploy
        

  2. Nel tuo browser web, inserisci il seguente URL:

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

    Sostituisci quanto segue:

    Home page dell'app Bookshelf

Per ulteriori informazioni sul deployment in App Engine, consulta l'articolo sull'ambiente di runtime di Ruby 2.5.

Rendere persistenti i dati con Firestore

Non puoi archiviare informazioni sulle istanze di App Engine poiché vengono perse al riavvio dell'istanza e non esistono quando vengono create nuove istanze. Puoi, invece, utilizzare un database in cui tutte le istanze eseguono operazioni di lettura e scrittura.

Google Cloud offre varie opzioni per archiviare i dati. In questo esempio viene utilizzato Firestore per archiviare i dati di ogni libro. Firestore è un database di documenti NoSQL serverless completamente gestito che consente di archiviare i dati e di eseguire query su di essi. Firestore si ridimensiona automaticamente per soddisfare le esigenze dell'app, con una scalabilità fino a zero quando non la utilizzi. Aggiungi il tuo primo libro.

  1. Nel tuo browser web, inserisci il seguente URL:

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

    Sostituisci quanto segue:

  2. Per creare un libro per l'applicazione di cui hai eseguito il deployment, fai clic su Add book (Aggiungi libro).

    Aggiungere un libro all'app Bookshelf
  3. Nel campo Title (Titolo), inserisci Moby Dick.
  4. Nel campo Author (Autore), inserisci Herman Melville.
  5. Fai clic su Save (Salva). Adesso esiste una voce nell'app Bookshelf.

    Voce per Moby Dick nell'app Bookshelf
  6. In Cloud Console, fai clic su Aggiorna per aggiornare la pagina di Firestore. I dati vengono visualizzati in Firestore. Ogni libro dell'app Bookshelf è archiviato come documento Firestore con un ID unico, e tutti questi documenti sono archiviati in una raccolta Firestore. Ai fini di questo tutorial, la raccolta è chiamata "books" (libri). Esempio di documento Firestore.

Firestore archivia i libri mediante la libreria client di Firestore. Ecco un esempio di come recuperare un documento 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

Per ulteriori informazioni sull'utilizzo di Firestore, consulta la pagina relativa all'aggiunta di dati a Firestore.

Archiviare in Cloud Storage i dati caricati

Dopo aver aggiunto un libro, devi aggiungere la rispettiva immagine di copertina. Non puoi archiviare i file nelle istanze. Un database non è la scelta giusta per i file di immagine. Utilizza, invece, Cloud Storage.

Cloud Storage è il principale archivio di blob per Google Cloud. Puoi utilizzare Cloud Storage per ospitare gli asset dell'app che vuoi condividere in Google Cloud. Per utilizzare Cloud Storage, devi creare un bucket Cloud Storage, ovvero un container di base che ospiti i tuoi dati.

  1. In Cloud Console, vai alla pagina Browser Cloud Storage.

    Vai alla pagina Browser Cloud Storage

  2. Fai clic su Crea bucket.
  3. Nella finestra di dialogo Crea bucket, inserisci un nome per il bucket aggiungendo l'ID del progetto Google Cloud alla stringa _bucket, in modo che il nome sia simile a YOUR_PROJECT_ID_bucket. Questo nome è soggetto ai requisiti per i nomi dei bucket. Puoi lasciare invariati i valori predefiniti di tutti gli altri campi.
  4. Fai clic su Crea.
  5. Una volta creato il bucket, fai clic su Edit book (Modifica libro) e seleziona un'immagine da caricare come copertina del libro. Ad esempio, puoi utilizzare questa immagine di dominio pubblico:
    Copertina di Moby Dick
  6. Fai clic su Save (Salva). Viene visualizzata la home page, dove è presente una voce per la tua app Bookshelf.
    Voce per Moby Dick nell'app Bookshelf

L'app Bookshelf invia i file caricati a Cloud Storage mediante la libreria client di 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

Per ulteriori informazioni sull'utilizzo di Cloud Storage, consulta l'elenco delle guide illustrative.

Monitorare l'app con la suite operativa di Google Cloud

Hai eseguito il deployment dell'app e hai creato e modificato i libri. Per monitorare questi eventi per i tuoi utenti, usa la gestione delle prestazioni delle applicazioni (APM).

Monitorare i log con Cloud Logging

Cloud Console

  1. Nel browser, accedi all'URL /logs nell'app:

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

    Viene inviata una voce personalizzata a Cloud Logging. Questa voce ha una gravità di log di tipo NOTICE e contiene il messaggio "Hey, you triggered a custom log entry. Good job!" (Hai attivato una voce di log personalizzata. Ben fatto!).

  2. Accedi al visualizzatore log per monitorare l'app in tempo reale. Quando si verifica un errore, è una delle prime sezioni da controllare.
    Visualizzatore log di Cloud Logging
  3. Nell'elenco a discesa delle risorse, seleziona GAE Application.
  4. Nell'elenco a discesa dei log, seleziona Tutti i log.

    Viene visualizzata una riga per la voce di log personalizzata.

    Voce nel visualizzatore log

gcloud

  1. Nella finestra del terminale, utilizza lo strumento a riga di comando gcloud per monitorare i log dell'app mediante il rilevamento di nuove voci di log:

    gcloud app logs tail

  2. Nel browser, accedi all'URL /logs nell'app:

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

    Viene inviata una voce personalizzata a Cloud Logging. Questa voce ha una gravità di log di tipo NOTICE e contiene il messaggio "Hey, you triggered a custom log entry. Good job!" (Hai attivato una voce di log personalizzata. Ben fatto!).

    L'output del comando gcloud mostra la nuova voce di log:

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

Monitorare gli errori con Error Reporting

  1. In Cloud Console, vai alla pagina Error Reporting.
    Vai alla pagina Error Reporting
    Error Reporting evidenzia errori ed eccezioni nell'app e consente di configurare avvisi al riguardo.
  2. Nel browser, accedi all'URL /errors nell'app.
    https://PROJECT_ID.REGION_ID.r.appspot.com/errors

    In questo modo viene generata una nuova eccezione di test, che viene inviata alla suite operativa di Google Cloud.

  3. In Cloud Console, torna alla pagina Error Reporting. Dopo qualche secondo, viene visualizzato il nuovo errore. Fai clic su Ricarica automaticamente per evitare di aggiornare manualmente la pagina.

    Messaggio di errore di Error Reporting.

Pulizia

Ecco come evitare che al tuo account Google Cloud Platform vengano addebitati costi relativi alle risorse utilizzate in questo tutorial:

Elimina il progetto

  1. In the Cloud Console, go to the Manage resources page.

    Go to the Manage resources page

  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.

Passaggi successivi