Specifica delle dipendenze in Ruby
Le funzioni Cloud scritte in Ruby utilizzano bundler per accedere alle dipendenze. Le dipendenze possono essere scaricate quando viene eseguito il deployment della funzione o pacchettizzata localmente insieme alla funzione.
Ogni funzione deve fornire un Gemfile
che specifica la gemma functions_framework
, oltre a eventuali gemme aggiuntive necessarie per la funzione. Gemfile
deve trovarsi nella stessa directory del file app.rb
che contiene il codice della tua funzione. Inoltre, la funzione deve fornire un file di blocco che specifica tutte le dipendenze transitorie 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 Functions scarica e installa
le dipendenze dichiarate in Gemfile
e Gemfile.lock
utilizzando bundler
.
L'elemento Gemfile
elenca i pacchetti richiesti dalla funzione, insieme a eventuali vincoli di versione facoltativi. Per ulteriori dettagli, consulta la Guida di riferimento al file gem.
Di seguito è riportato un esempio Gemfile
:
source "https://rubygems.org" gem "functions_framework", "~> 0.7" gem "google-cloud-storage", "~> 1.29"
Esegui il comando seguente per installare il gem functions_framework
e altre dipendenze:
bundle install
Il Gemfile.lock
viene generato dal bundleer quando analizza le tue dipendenze
e blocca le versioni esatte di ogni gem da installare. Questo garantisce, ad esempio, che per la funzione venga eseguito il deployment con le stesse versioni delle dipendenze utilizzate nei test locali. Il formato esatto di Gemfile.lock
è
privato per il bundler e non deve essere modificato manualmente.
Se hai già utilizzato il bundler per installare le dipendenze ed eseguire i test localmente, è probabile che sia già presente un file Gemfile.lock
. In caso contrario, puoi generarne uno eseguendo:
bundle lock
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 rubygems package manager.
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 gem
deve includere un file gemspec
valido e deve trovarsi nella
gerarchia delle directory della funzione in modo che venga eseguito il deployment del codice insieme alla
funzione. Ad esempio, potresti utilizzare una struttura di directory come quella 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 l'articolo Riferimento gemfile per maggiori informazioni sul riferimento ai percorsi gem locali.