Il runtime Ruby

La funzione Cloud Run viene eseguita in un ambiente costituito da una versione del sistema operativo con pacchetti aggiuntivi, supporto per le lingue e la libreria Ruby Functions Framework che supporta e richiama la funzione. Questo ambiente è identificato dalla versione della lingua ed è noto come ID runtime.

Preparazione della funzione

Puoi preparare una funzione direttamente dalla console Google Cloud o scriverla sulla tua macchina locale e caricarla. Per preparare la tua macchina locale per lo sviluppo in Ruby, consulta Configurare un ambiente di sviluppo Ruby.

Seleziona il runtime

Le funzioni Cloud Run supportano diverse versioni di Ruby, elencate nella pagina Ambienti di runtime e immagini di base dei linguaggi supportati. Puoi selezionare il runtime Ruby preferito per la tua funzione durante il deployment.

gcloud

Per utilizzare le funzioni Cloud Run per eseguire il deployment di una funzione HTTP utilizzando gcloud CLI, consulta Eseguire il deployment utilizzando Google Cloud CLI.

Console

Se utilizzi la console Google Cloud , seleziona il runtime quando crei ed esegui il deployment della funzione. Per istruzioni dettagliate, consulta la guida rapida alla console Trusted Cloud di Google Cloud per T-Systems Sovereign Cloud.

Struttura del codice sorgente

Affinché le funzioni Cloud Run trovino la definizione della funzione, il codice sorgente deve seguire una struttura specifica. Per ulteriori informazioni, consulta Scrivere funzioni Cloud Run.

Specifica delle dipendenze

Le funzioni Cloud Run scritte in Ruby utilizzano Bundler per accedere alle dipendenze.

Il Functions Framework è una dipendenza obbligatoria per tutte le funzioni. Anche se le funzioni Cloud Run lo installano per tuo conto al momento della creazione della funzione, ti consigliamo di includerlo come dipendenza esplicita per maggiore chiarezza.

Se la funzione si basa su dipendenze private, ti consigliamo di eseguire il mirroring di functions-framework nel tuo registry privato. Includi functions-framework sottoposto a mirroring come dipendenza della funzione per evitare di installare il pacchetto dalla rete internet pubblica.

Ogni funzione deve fornire un Gemfile che specifica il functions_framework gem, insieme a eventuali gem aggiuntivi necessari per la funzione. Gemfile deve trovarsi nella stessa directory del file app.rb contenente il codice della funzione. Inoltre, la funzione deve fornire un file di blocco che specifichi tutte le dipendenze trascendenti e le relative versioni esatte. Questo file, Gemfile.lock, si trova anche nella stessa directory insieme a Gemfile.

Quando esegui il deployment della funzione, Cloud Run scarica e installa le dipendenze dichiarate in Gemfile e Gemfile.lock utilizzando bundler.

Gemfile elenca i pacchetti richiesti dalla funzione, insieme a eventuali vincoli di versione facoltativi. Per maggiori dettagli, consulta il riferimento Gemfile.

Di seguito è riportato un esempio di Gemfile:

source "https://rubygems.org"

gem "functions_framework", "~> 0.7"
gem "google-cloud-storage", "~> 1.29"

Imballaggio delle dipendenze locali

Puoi anche creare il pacchetto e implementare le dipendenze insieme alla funzione. Questo approccio è utile se la dipendenza non è disponibile utilizzando il gestore dei pacchetti RubyGems.

Per pacchettizzare un gem localmente, includilo in una directory nella struttura della directory della funzione e fornisci il percorso nella voce Gemfile della dipendenza. La directory del gem deve includere un file gemspec valido e deve trovarsi all'interno della gerarchia delle directory della funzione in modo che il codice venga disegnato insieme alla funzione. Ad esempio, puoi utilizzare una struttura di directory come la seguente:

myfunction/
├── Gemfile
├── Gemfile.lock
├── app.rb
└── my_private_gem/
    ├── lib/
    |   └── my_private_gem.rb
    └── my_private_gem.gemspec

La voce Gemfile potrebbe avere il seguente aspetto:

source "https://rubygems.org"

gem "functions_framework", "~> 0.7"
gem "my_private_gem", path: "./my_private_gem"

Per ulteriori informazioni sul riferimento ai percorsi dei gem locali, consulta la documentazione di riferimento di Gemfile.