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 inserite nel pacchetto localmente insieme alla funzione.
Ogni funzione deve fornire un Gemfile che specifica il gem functions_framework, insieme a eventuali gem aggiuntivi necessari alla funzione. Gemfile deve trovarsi nella stessa directory del file app.rb che contiene il codice della funzione. Inoltre, la funzione deve fornire un file di blocco che specifichi tutte le dipendenze transitive e le relative versioni esatte. Anche questo file, Gemfile.lock, si trova nella stessa directory del Gemfile.
Quando esegui il deployment della funzione, Cloud Run Functions scarica e installa le dipendenze dichiarate nei file Gemfile e Gemfile.lock utilizzando bundler.
Il file Gemfile elenca i pacchetti richiesti dalla tua funzione, insieme a eventuali vincoli di versione facoltativi. Per maggiori dettagli, consulta il Riferimento per Gemfile.
Ecco 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 altre dipendenze:
bundle install
Il file Gemfile.lock viene generato da Bundler quando analizza le dipendenze e blocca le versioni esatte di ogni gem da installare. In questo modo, ad esempio, il deployment della tua funzione viene eseguito con le stesse versioni delle dipendenze utilizzate nei test locali. Il formato esatto del file Gemfile.lock è privato per Bundler e non deve essere modificato manualmente.
Se hai già utilizzato Bundler per installare le dipendenze ed eseguire test locali, probabilmente hai già un file Gemfile.lock. In caso contrario, puoi generarne uno eseguendo:
bundle lock
Il framework di Functions è una dipendenza obbligatoria per tutte le funzioni. Sebbene Cloud Run Functions lo installi per tuo conto al momento della creazione della funzione, ti consigliamo di includerlo come dipendenza esplicita per maggiore chiarezza.
Se la tua funzione si basa su dipendenze private, ti consigliamo di eseguire il mirroring di functions-framework nel tuo registro privato. Includi il functions-framework sottoposto a mirroring come dipendenza della tua funzione per evitare di installare il pacchetto dalla rete internet pubblica.
Pacchettizzazione delle dipendenze locali
Puoi anche creare pacchetti delle dipendenze ed eseguirne il deployment insieme alla funzione. Questo approccio è utile se la dipendenza non è disponibile tramite il gestore di pacchetti rubygems.
Per pacchettizzare un gem localmente, includilo in una directory nella struttura delle 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 di directory della funzione in modo da eseguire il deployment del relativo codice 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 può essere simile a questa:
source "https://rubygems.org" gem "functions_framework", "~> 0.7" gem "my_private_gem", path: "./my_private_gem"
Per saperne di più sul riferimento ai percorsi dei gem locali, consulta il Riferimento per Gemfile.