Specificare le dipendenze in Ruby
Funzioni Cloud Run scritte in Ruby bundler per accedere delle 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. Questo file, Gemfile.lock
, si trova anche nella stessa directory insieme 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 tua 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 il seguente 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, ad esempio, la funzione viene dispiattata con le stesse versioni delle dipendenze di quelle utilizzate nei test locali. Il formato esatto di Gemfile.lock
è privato del bundler e non è destinato a 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
Il framework delle funzioni è un la dipendenza richiesta per tutte le funzioni. Sebbene le funzioni Cloud Run lo installino 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 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 pacchettizzare ed eseguire il deployment delle 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 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, potresti utilizzare una struttura di directory come
seguenti:
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.