El entorno de ejecución de Ruby

Tu función de Cloud Run se ejecuta en un entorno que consta de una versión del sistema operativo con paquetes de complementos, compatibilidad con lenguajes y la biblioteca de Ruby Functions Framework que admite e invoca la función. Este entorno se identifica mediante la versión del lenguaje y se conoce como el ID del entorno de ejecución.

Preparación de funciones

Puedes preparar una función directamente desde la consola de Google Cloud o escribirla en tu máquina local y subirla. Si deseas preparar tu máquina local para el desarrollo de Ruby, consulta Configura un entorno de desarrollo de Ruby.

Entornos de ejecución y imágenes base de Ruby compatibles

Entorno de ejecución ID de entorno de ejecución Pilas Imagen base del entorno de ejecución
Ruby 3.3 ruby33
  • google-22 (predeterminada)
  • google-22-full
  • google-22/ruby33
  • google-22-full/ruby33
  • Ruby 3.2 ruby32
  • google-22 (predeterminada)
  • 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

    Selecciona tu entorno de ejecución

    Puedes seleccionar uno de los entornos de ejecución de Ruby compatibles para tu función durante la implementación.

    Puedes seleccionar una versión del entorno de ejecución con la consola de Google Cloud o la CLI de gcloud. Haz clic en la pestaña para obtener instrucciones sobre el uso de la herramienta que elijas:

    gcloud

    Especifica la imagen base de Ruby para tu función con la marca --base-image mientras la implementas. Por ejemplo:

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

    Reemplaza lo siguiente:

    • Reemplaza FUNCTION por el nombre de la función que implementas. Puedes omitir este parámetro por completo, pero se te solicitará el nombre si lo haces.

    • FUNCTION_ENTRYPOINT por el punto de entrada a tu función en tu código fuente. Este es el código que ejecuta Cloud Run cuando se ejecuta tu función. El valor de esta marca debe ser un nombre de función o un nombre de clase completamente calificado que exista en tu código fuente.

    Para obtener instrucciones detalladas sobre cómo implementar una función con la CLI de gcloud, consulta Implementa funciones en Cloud Run.

    Console

    Puedes seleccionar una versión del entorno de ejecución cuando creas o actualizas una función de Cloud Run en la consola de Google Cloud. Si deseas obtener instrucciones detalladas para implementar una función, consulta Implementa funciones en Cloud Run.

    Para seleccionar un entorno de ejecución en la consola de Google Cloud cuando creas una función, sigue estos pasos:

    1. En la consola de Google Cloud, ve a la página Cloud Run:

      Ir a Cloud Run

    2. Haz clic en Escribe una función.

    3. En la lista Entorno de ejecución, selecciona una versión del entorno de ejecución de Ruby.

    4. Haz clic en Crear y espera a que Cloud Run cree el servicio con una revisión de marcador de posición.

    5. La consola te redireccionará a la pestaña Fuente, en la que puedes ver el código fuente de tu función. Haz clic en Guardar y volver a implementar.

    Si deseas obtener instrucciones detalladas para actualizar la versión del entorno de ejecución después de implementar la función, consulta Cómo volver a implementar un código fuente nuevo.

    Estructura del código fuente

    Para que Cloud Run Functions encuentre la definición de tu función, tu código fuente debe seguir una estructura específica. Consulta Escribe funciones de Cloud Run para obtener más información.

    Especificar dependencias

    Las funciones de Cloud Run escritas en Ruby usan el agrupador para acceder a las dependencias.

    Functions Framework es una dependencia obligatoria para todas las funciones. Aunque las funciones de Cloud Run la instalan en tu nombre cuando se crea la función, te recomendamos que la incluyas como una dependencia explícita para brindar mayor claridad.

    Si tu función depende de dependencias privadas, te recomendamos que dupliques functions-framework en tu registro privado. Incluye el functions-framework duplicado como una dependencia en tu función para evitar la instalación del paquete desde la Internet pública.

    Cada función debe proporcionar un Gemfile que especifique el valor functions_framework, junto con cualquier gema adicional que necesite la función. Gemfile debe estar en el mismo directorio que el archivo app.rb que contiene el código de tu función. Además, tu función debe proporcionar un archivo de bloqueo que especifique todas las dependencias transitivas y sus versiones exactas. Este archivo, Gemfile.lock, también se encuentra en el mismo directorio junto con Gemfile.

    Cuando implementas tu función, Cloud Run descarga y, luego, instala las dependencias declaradas en Gemfile y Gemfile.lock con bundler.

    El Gemfile enumera los paquetes que requiere tu función, junto con las restricciones de las versiones opcionales. Para obtener más detalles, consulta la referencia de Gemfile.

    A continuación, se muestra un ejemplo de Gemfile:

    source "https://rubygems.org"
    
    gem "functions_framework", "~> 0.7"
    gem "google-cloud-storage", "~> 1.29"
    

    Empaqueta las dependencias locales

    También puedes implementar y empaquetar dependencias junto con tu función. Este enfoque es útil si tu dependencia no está disponible a través del administrador de paquetes de gemas de Ruby.

    Para empaquetar una gema localmente, inclúyela en un directorio en la estructura de directorios de tu función y proporciona la ruta en la entrada Gemfile de la dependencia. El directorio de gemas debe incluir un archivo gemspec válido y debe estar ubicado dentro de la jerarquía de directorios de la función para que su código se implemente junto con tu función. Por ejemplo, puedes usar una estructura de directorio como la que se muestra a continuación:

    myfunction/
    ├── Gemfile
    ├── Gemfile.lock
    ├── app.rb
    └── my_private_gem/
        ├── lib/
        |   └── my_private_gem.rb
        └── my_private_gem.gemspec
    

    La entrada Gemfile podría verse de la siguiente manera:

    source "https://rubygems.org"
    
    gem "functions_framework", "~> 0.7"
    gem "my_private_gem", path: "./my_private_gem"
    

    Consulta la referencia de Gemfile para obtener más información sobre cómo hacer referencia a rutas de gemas locales.