Il runtime Ruby

La funzione Cloud Run viene eseguita in un ambiente costituito da una versione del sistema operativo con pacchetti aggiuntivi, supporto per le lingue e la libreria Ruby Functions Framework che supporta e richiama la funzione. Questo ambiente è identificato dalla versione della lingua ed è noto come ID runtime.

Preparazione della funzione

Puoi preparare una funzione direttamente dalla console Google Cloud o scriverla sulla tua macchina locale e caricarla. Per preparare la tua macchina locale per lo sviluppo in Ruby, consulta Configurare un ambiente di sviluppo Ruby.

Runtime e immagini di base Ruby supportati

Runtime ID runtime Serie Immagine di base del runtime
Ruby 3.3 ruby33
  • google-22 (valore predefinito)
  • google-22-full
  • google-22/ruby33
  • google-22-full/ruby33
  • Ruby 3.2 ruby32
  • google-22 (valore predefinito)
  • google-22-full
  • google-22/ruby32
  • google-22-full/ruby32
  • Ruby 3.0 ruby30 google-18-full google-18-full/ruby30
    Ruby 2.7 ruby27 google-18-full google-18-full/ruby27
    Ruby 2.6 ruby26 google-18-full google-18-full/ruby26

    Seleziona il runtime

    Durante il deployment puoi selezionare uno dei runtime Ruby supportati per la tua funzione.

    Puoi selezionare una versione di runtime utilizzando la console Google Cloud o gcloud CLI. Fai clic sulla scheda per leggere le istruzioni sull'utilizzo dello strumento scelto:

    gcloud

    Specifica l'immagine di base Ruby per la tua funzione utilizzando il flag --base-image, durante il deployment della funzione. Ad esempio:

    gcloud beta run deploy FUNCTION \
        --source . \
        --function FUNCTION_ENTRYPOINT \
        --base-image ruby33
    

    Sostituisci:

    • FUNCTION con il nome della funzione di cui stai eseguendo il deployment. Puoi omettere del tutto questo parametro, ma se lo fai ti verrà chiesto il nome.

    • FUNCTION_ENTRYPOINT con il punto di ingresso della funzione nel codice sorgente. Questo è il codice che Cloud Run esegue quando viene eseguita la funzione. Il valore di questo flag deve essere un nome di funzione o un nome di classe completamente qualificato esistente nel codice sorgente.

    Per istruzioni dettagliate sul deployment di una funzione utilizzando l'interfaccia a riga di comando gcloud, consulta Eseguire il deployment di funzioni in Cloud Run.

    Console

    Puoi selezionare una versione del runtime quando crei o aggiorni una funzione Cloud Run nella console Google Cloud. Per istruzioni dettagliate sul deployment di una funzione, consulta Eseguire il deployment di funzioni in Cloud Run.

    Per selezionare un runtime nella console Google Cloud quando crei una funzione:

    1. Nella console Google Cloud, vai alla pagina Cloud Run:

      Vai a Cloud Run

    2. Fai clic su Scrivi una funzione.

    3. Nell'elenco Runtime, seleziona una versione del runtime Ruby.

    4. Fai clic su Crea e attendi che Cloud Run crei il servizio utilizzando una revisione segnaposto.

    5. La console ti reindirizzerà alla scheda Origine, dove potrai visualizzare il codice sorgente della funzione. Fai clic su Salva e ridistribuisci.

    Per istruzioni dettagliate su come aggiornare la versione del runtime dopo il deployment della funzione, consulta Eseguire nuovamente il deployment del nuovo codice sorgente.

    Struttura del codice sorgente

    Affinché le funzioni Cloud Run trovino la definizione della funzione, il codice sorgente deve seguire una struttura specifica. Per ulteriori informazioni, consulta Scrivere funzioni Cloud Run.

    Specifica delle dipendenze

    Le funzioni Cloud Run scritte in Ruby utilizzano Bundler per accedere alle dipendenze.

    Il Functions Framework è una dipendenza obbligatoria per tutte le funzioni. Anche se le funzioni Cloud Run lo installano 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 functions-framework sottoposto a mirroring come dipendenza della funzione per evitare di installare il pacchetto dalla rete internet pubblica.

    Ogni funzione deve fornire un Gemfile che specifica il functions_framework gem, insieme a eventuali gem aggiuntivi necessari per la funzione. Gemfile deve trovarsi nella stessa directory del file app.rb contenente il codice della funzione. Inoltre, la funzione deve fornire un file di blocco che specifichi tutte le dipendenze trascendenti 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 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"
    

    Imballaggio delle dipendenze locali

    Puoi anche creare il pacchetto e implementare le dipendenze insieme alla funzione. Questo approccio è utile se la dipendenza non è disponibile utilizzando 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, 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"
    

    Per ulteriori informazioni sul riferimento ai percorsi dei gem locali, consulta la documentazione di riferimento di Gemfile.