Il runtime Ruby è lo stack software responsabile dell'installazione del codice dell'applicazione e delle dipendenze, nonché dell'esecuzione dell'applicazione nell'ambiente flessibile.
Versioni di Ruby
Ruby 4.0 utilizza i buildpack. Per l'elenco completo delle versioni di Ruby supportate e della versione di Ubuntu corrispondente, consulta la pianificazione del supporto del runtime.
Per utilizzare una versione di Ruby supportata, devi:
Specificare una versione di Ruby nel file
Gemfile.RUBY VERSION ruby "4.0.x"Installare la versione 420.0.0 o successive di gcloud CLI. Puoi aggiornare i tuoi strumenti CLI eseguendo il comando
gcloud components update. Per visualizzare la versione installata, puoi eseguire ilgcloud versioncomando.Specificare l'impostazione
operating_systemnel fileapp.yaml:runtime: ruby env: flex runtime_config: operating_system: "ubuntu24"Facoltativamente, puoi specificare una versione dell'interprete Ruby utilizzando un file
.ruby-versionnella directory dell'applicazione. Ad esempio,4.0.x
Versioni precedenti
Per utilizzare il runtime Ruby versione 3.1 e precedenti, specifica una versione dell'interprete Ruby
utilizzando un file .ruby-version nella directory dell'applicazione.
Quando questo file è presente, il runtime installa la versione di Ruby richiesta quando esegui il deployment dell'applicazione utilizzando rbenv. Se non è possibile installare la versione richiesta, App Engine mostra un messaggio di errore durante il deployment.
Se non fornisci un file .ruby-version, il runtime Ruby utilizza per impostazione predefinita la versione 2.7. Tieni presente che il valore predefinito può cambiare in qualsiasi momento, pertanto ti consigliamo di specificare una versione di Ruby per l'app.
Supporto di altri runtime Ruby
Se devi utilizzare una versione di Ruby non supportata, puoi creare un runtime personalizzato e selezionare un'immagine di base valida con la versione di Ruby di cui hai bisogno.
Per le immagini di base fornite da Google o immagini di base Ruby Docker, consulta Creare runtime personalizzati.
Dipendenze
Il runtime cerca un Gemfile
file nella directory di origine dell'applicazione e utilizza
Bundler per installare
le dipendenze prima di avviare l'applicazione. Per ulteriori informazioni sulla
dichiarazione e sulla gestione dei pacchetti, consulta Utilizzare le librerie Ruby.
Utilizzare le librerie C con Ruby
Per le librerie Ruby che richiedono estensioni C, le intestazioni per la versione di Ruby corrente e i seguenti pacchetti Ubuntu sono preinstallati sul sistema.
autoconfbuild-essentialca-certificatescmakecurlfilegitimagemagicklibcurl3libcurl3-gnutlslibcurl4-openssl-devlibffi-devlibgdbm-devlibgit2-devlibgmp-devlibicu-devlibjemalloc-devlibjemalloc1libmagickwand-devlibmysqlclient-devlibncurses5-devlibpq-devlibqdbm-devlibreadline6-devlibsqlite3-devlibssl-devlibxml2-devlibxslt-devlibyaml-devlibz-devsystemtaptzdata
Questi pacchetti consentono l'installazione della maggior parte delle librerie Ruby più diffuse. Se l'applicazione richiede dipendenze aggiuntive a livello di sistema operativo, dovrai utilizzare un runtime personalizzato basato su questo runtime per installare i pacchetti appropriati.
Avvio dell'applicazione
Il runtime avvia l'applicazione utilizzando il entrypoint definito in
app.yaml. Il punto di ingresso deve avviare un processo che risponde alle richieste HTTP sulla porta definita dalla variabile di ambiente PORT.
Ad esempio:
entrypoint: bundle exec rails server -p $PORT
La maggior parte delle applicazioni web utilizza un server web supportato da Rack come Puma, Unicorn o Thin.
Devi aggiungere il server come dipendenza nel file di configurazione Gemfile dell'applicazione. Il runtime installerà tutte le dipendenze prima di chiamare il punto di ingresso.
source "https://rubygems.org"
gem "rack"
gem "puma"
Un esempio di punto di ingresso che utilizza Puma per un'applicazione Rails:
entrypoint: bundle exec rails server Puma -p $PORT
Un esempio di punto di ingresso che utilizza Puma per qualsiasi applicazione Rack:
entrypoint: bundle exec rackup -s Puma -p $PORT
Per le applicazioni che possono gestire le richieste senza un server Rack, puoi semplicemente eseguire uno script Ruby:
entrypoint: bundle exec ruby app.rb
Variabili di ambiente
Le seguenti variabili di ambiente sono impostate dall'ambiente di runtime:
| Variabile di ambiente | Descrizione |
|---|---|
GAE_INSTANCE |
Il nome dell'istanza corrente. |
GAE_MEMORY_MB |
La quantità di memoria disponibile per il processo dell'applicazione. |
GAE_SERVICE |
Il nome del servizio specificato nel file app.yaml
dell'applicazione o, se non è specificato alcun nome del servizio, è impostato su default. |
GAE_VERSION |
L'etichetta della versione dell'applicazione corrente. |
GOOGLE_CLOUD_PROJECT |
L'ID progetto associato all'applicazione, visibile in the Google Cloud console |
PORT |
La porta che riceverà le richieste HTTP. |
RACK_ENV |
Impostato su production. |
RAILS_ENV |
Impostato su production. |
RAILS_SERVE_STATIC_FILES |
Impostato su true. |
Puoi impostare variabili di ambiente aggiuntive con app.yaml.
Server di metadati
Ogni istanza dell'applicazione può utilizzare il server di metadati di Compute Engine per eseguire query sulle informazioni sull'istanza, inclusi nome host, indirizzo IP esterno, ID istanza, metadati personalizzati e informazioni sull'account di servizio. App Engine non consente di impostare metadati personalizzati per ogni istanza, ma puoi impostare metadati personalizzati a livello di progetto e leggerli dalle istanze di App Engine e Compute Engine.
Questa funzione di esempio utilizza il server di metadati per ottenere un indirizzo IP esterno di un'istanza.