Specifica le dipendenze in Ruby
Le funzioni Cloud Functions scritte in Ruby utilizzano bundler per accedere alle dipendenze. Le dipendenze possono essere scaricate al momento del deployment della funzione oppure pacchettizzate localmente insieme alla funzione.
Ogni funzione deve fornire un Gemfile
che specifichi il gemma functions_framework
insieme a eventuali gemme aggiuntive necessarie per la 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 accanto a Gemfile
.
Quando esegui il deployment della funzione, Cloud Functions 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 la documentazione di riferimento del file 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 altre
dipendenze:
bundle install
Gemfile.lock
viene generato dal bundler quando analizza le tue dipendenze e blocca le versioni esatte di ogni gem da installare. In questo modo ti assicuri, ad esempio, che il deployment della funzione venga eseguito con le stesse versioni delle dipendenze utilizzate nei test locali. Il formato esatto dell'elemento Gemfile.lock
è
privato per il bundler e non può essere modificato manualmente.
Se hai già utilizzato bundler per installare le dipendenze ed eseguire test localmente, probabilmente hai già un file Gemfile.lock
. In caso contrario, puoi generarne uno eseguendo:
bundle lock
Il framework delle funzioni è una dipendenza obbligatoria per tutte le funzioni. Sebbene Cloud Functions la installi per tuo conto al momento della creazione della funzione, ti consigliamo di includerla come dipendenza esplicita per chiarezza.
Se la funzione si basa su dipendenze private, ti consigliamo di eseguire il mirroring di functions-framework
nel registro privato. Includi l'oggetto functions-framework
con mirroring come dipendenza dalla funzione per evitare di installare il pacchetto dalla rete internet pubblica.
Pacchettizzazione delle dipendenze locali
Puoi anche pacchettizzare ed eseguire il deployment delle dipendenze 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 di directory della tua funzione e fornisci il percorso nella voce Gemfile
della dipendenza. La directory gem
deve includere un file gemspec
valido e deve trovarsi all'interno della
gerarchia della directory della funzione, in modo che il deployment del relativo codice venga eseguito insieme alla
funzione. Ad esempio, potresti 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 pagina di riferimento Gemfile per ulteriori discussioni sul riferimento ai percorsi dei gem locali.