Specifica le dipendenze in Ruby

Le funzioni Cloud Run scritte in Ruby utilizzano Bundler per accedere alle dipendenze. Le dipendenze possono essere scaricate durante il deployment della funzione o impacchettate localmente insieme alla funzione.

Ogni funzione deve fornire un valore Gemfile che specifica il valore functions_framework gem, insieme a eventuali altre gemme richieste dalla funzione. Gemfile deve essere in nella stessa directory del file app.rb che contiene il codice della funzione. Nella Inoltre, la funzione deve fornire un file di blocco che specifichi tutte le delle dipendenze transitive e le relative versioni esatte. Il file Gemfile.lock è che si trova anch'esso nella stessa directory accanto a Gemfile.

Quando esegui il deployment della funzione, le funzioni 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 ulteriori 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"

Esegui questo comando per installare il gem functions_framework e le altre dependencies:

bundle install

Il file Gemfile.lock viene generato da Bundler quando analizza le dipendenze e blocca le versioni esatte di ogni gem da installare. Ciò garantisce, esempio, il deployment della funzione viene eseguito con le stesse versioni delle dipendenze utilizzati nei test locali. Il formato esatto dell'elemento Gemfile.lock è privato per il bundler e non è pensato per essere modificato manualmente.

Se hai già utilizzato il bundler per installare le dipendenze ed eseguire i test localmente, probabilmente hai già un file Gemfile.lock. In caso contrario, puoi generarne uno eseguendo:

bundle lock

Functions Framework è una dipendenza obbligatoria per tutte le funzioni. Sebbene Cloud Run funzioni lo installi per tuo conto quando viene creata la funzione, ti consigliamo includerla 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 lo stato functions-framework come dipendenza dalla tua funzione per evitare di installare il componente dalla rete internet pubblica.

Imballaggio delle dipendenze locali

Puoi anche creare il pacchetto e implementare le dipendenze insieme alla funzione. Questo approccio è utile se la dipendenza non è disponibile tramite 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 gemma deve includere un file gemspec valido e deve trovarsi all'interno della sezione la gerarchia di directory della funzione in modo che il deployment del codice venga eseguito insieme personalizzata. 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"

Consulta la sezione Riferimento a Gemfile per ulteriori informazioni sul riferimento ai percorsi dei gem locali.