Esecuzione di Rails 5 nell'ambiente flessibile di App Engine

Inizia a sviluppare app Ruby su Rails eseguite nell'ambiente flessibile di App Engine. Le app che crei vengono eseguite sulla stessa infrastruttura alla base di tutti i prodotti Google, quindi puoi avere la certezza che possano scalare per offrire a tutti i tuoi utenti, pochi o milioni.

Questo tutorial presuppone che tu abbia familiarità con lo sviluppo web di Rails. Ti guiderà attraverso il deployment di una nuova app Rails.

Questo tutorial richiede Ruby 2.6 o 2.7.

Prima di iniziare

  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. Install the Google Cloud CLI.
  7. To initialize the gcloud CLI, run the following command:

    gcloud init

Configurare l'ambiente locale per Rails

Per configurare l'ambiente locale per lo sviluppo di Rails, devi:

  1. Installa Ruby 2.6 o 2.7.

  2. Installa la gemma Rails 5.

  3. Installa la gemma Bundler.

In alternativa, puoi utilizzare Cloud Shell, fornito con Ruby, Rails e Google Cloud CLI già installato.

Per ulteriori informazioni sull'installazione delle guide e sulle relative dipendenze, consulta la guida ufficiale Introduzione a Rails.

Dopo aver completato i prerequisiti, puoi creare ed eseguire il deployment di un'app Rails. Le seguenti sezioni illustrano come configurare, eseguire e sottoporre a deployment un'app.

Creare una nuova app

  1. Creare una nuova app di esempio Rails.

    rails new appengine_example
    
  2. Vai alla directory che contiene il codice di esempio.

    cd appengine_example
    

Esegui l'app localmente

Per eseguire la nuova app Rails sul tuo computer locale:

  1. Installare le dipendenze utilizzando Bundler.

     bundle install
    
  2. Avvia un server web locale.

     bundle exec rails server
    
  3. Nel browser, vai alla pagina http://localhost:3000/.

Vedi "Evviva! Sei su Rails!" messaggio dall'app di esempio visualizzato nella pagina.

Screenshot della nuova app Rails in esecuzione

Aggiungi una pagina semplice

Ora aggiungi una pagina di benvenuto all'app Rails generata.

  1. Per generare il ponteggio per una nuova pagina, crea un nuovo controller Rails denominato WelcomeController con un'azione index.

    bundle exec rails generate controller Welcome index
    
  2. Apri il file app/views/welcome/index.html.erb per visualizzare il codice HTML riportato di seguito.

    <h1>Welcome#index</h1>
    <p>Find me in app/views/welcome/index.html.erb</p>
  3. Modifica il file come preferisci. Ad esempio, puoi utilizzare i seguenti contenuti:

    <h1>Welcome</h1>
    <p>This is a home page for a new Rails App on Google Cloud Platform!</p>
  4. Imposta l'azione index del controller come azione principale per le rotaie. Quindi, ogni volta che un utente visita l'app Rails, vede la tua pagina di benvenuto.

  5. Apri il file config/routes.rb per visualizzare i seguenti contenuti generati.

    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. Per modificare questo file, aggiungi 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. Salva il file e chiudilo. Testa l'app Rails come prima.

Esegui il deployment dell'app nell'ambiente flessibile di App Engine

L'ambiente flessibile di App Engine utilizza un file denominato app.yaml. per descrivere la configurazione del deployment di un'app. Se questo file non è presente, l'interfaccia a riga di comando gcloud tenta di indovinare la configurazione del deployment. Tuttavia, è una buona idea fornire questo file perché Rails richiede una chiave segreta in un ambiente di produzione.

Per configurare l'app di esempio per il deployment in App Engine, crea un nuovo file denominato app.yaml nella directory principale della directory dell'app di esempio e aggiungi quanto segue:

entrypoint: bundle exec rackup --port $PORT
env: flex
runtime: ruby

Configura la chiave segreta di Rails

Quando esegui il deployment di un'app Rails nell'ambiente di produzione, imposta la variabile di ambiente SECRET_KEY_BASE su una chiave segreta utilizzata per proteggere i dati della sessione utente. Questa variabile di ambiente è stata letta nel file config/secrets.yml.

  1. Genera una nuova chiave segreta.

    bundle exec rails secret
    
  2. Copia la chiave segreta generata. Utilizzerai il codice segreto nel passaggio successivo.

  3. Apri il file app.yaml che hai creato in precedenza e aggiungi una sezione env_variables. env_variables imposta le variabili di ambiente nell'ambiente production nell'ambiente flessibile di App Engine. app.yaml dovrebbe essere simile all'esempio seguente, con [SECRET_KEY] sostituito con la chiave segreta copiata.

    entrypoint: bundle exec rackup --port $PORT
    env: flex
    runtime: ruby
    
    env_variables:
      SECRET_KEY_BASE: [SECRET_KEY]

Configurare un'app dell'ambiente flessibile di App Engine

Se è la prima volta che esegui il deployment di un'app, devi creare un'app dell'ambiente flessibile di App Engine per poter selezionare l'area geografica in cui eseguire l'app Rails. Ulteriori informazioni su aree geografiche e zone.

  1. Crea un'app App Engine. Per impostazione predefinita, il comando seguente crea due istanze:

    gcloud app create
    
  2. Seleziona una regione che supporti l'ambiente flessibile di App Engine per le app Ruby.

Esegui il deployment nell'ambiente flessibile di App Engine

Esegui il deployment dell'app di esempio eseguendo questo comando:

gcloud app deploy

Attendi il messaggio che ti comunica che l'aggiornamento è stato completato. Questa operazione può richiedere diversi minuti.

Accedere all'app Rails di cui è stato eseguito il deployment

  1. Per recuperare l'ID progetto, esegui gcloud info.

  2. Nel browser, inserisci il seguente URL:

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

    Sostituisci quanto segue:

Vengono visualizzati i seguenti contenuti.

Screenshot della nuova app Rails in esecuzione

Questa volta la tua richiesta è gestita dall'app Rails in esecuzione nell'ambiente flessibile di App Engine.

Questo comando esegue il deployment dell'app come descritto in app.yaml e imposta la versione appena sottoposta a deployment come versione predefinita, in modo che pubblichi tutto il nuovo traffico. Durante il deployment dell'app, potresti vedere diversi messaggi ripetuti mentre la piattaforma controlla se l'app è in fase di pubblicazione. È normale. Attendi il messaggio che ti comunica che l'aggiornamento dell'app è stato completato.

Se intendi aggiornare l'applicazione, puoi distribuire la versione aggiornata inserendo lo stesso comando che hai utilizzato per la prima distribuzione dell'applicazione. La nuova distribuzione crea una nuova versione dell'applicazione e la imposta come versione predefinita. Le versioni precedenti dell'applicazione verranno mantenute, così come le istanze VM associate. Tieni presente che tutte queste versioni dell'app e tutte le istanze VM sono risorse fatturabili.

Lettura log App Engine

Ora che hai eseguito il deployment dell'app Rails, puoi leggere i log. Puoi leggere i log dell'applicazione utilizzando Esplora log nella console Google Cloud o utilizzando gcloud app logs read. Scopri di più sulla lettura dei log utilizzando gcloud CLI.

Esegui la pulizia delle risorse

Una volta completato il tutorial, puoi eseguire la pulizia delle risorse che hai creato in modo che interrompano l'utilizzo della quota e che vengano addebitati dei costi. Le sezioni seguenti descrivono come eliminare o disattivare queste risorse.

Elimina progetto

Il modo più semplice per eliminare la fatturazione è eliminare il progetto che hai creato per il tutorial.

Per eliminare il progetto:

  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.

Elimina una versione di App Engine

Per eliminare una versione dell'applicazione:

  1. In the Google Cloud console, go to the Versions page for App Engine.

    Go to Versions

  2. Select the checkbox for the non-default app version that you want to delete.
  3. Per eliminare la versione dell'app, fai clic su Elimina.

Passaggi successivi