Tu función de Cloud Run se ejecuta en un entorno que consta de una versión del sistema operativo con paquetes complementarios, compatibilidad con idiomas y la biblioteca Ruby Functions Framework, que admite e invoca tu función. Este entorno se identifica por la versión del idioma y se conoce como ID de tiempo de ejecución.
Preparación de la función
Puedes preparar una función directamente desde la Google Cloud consola o escribirla en tu máquina local y subirla. Para preparar tu máquina local para el desarrollo de Ruby, consulta el artículo Configurar un entorno de desarrollo de Ruby.
Runtimes e imágenes base de Ruby compatibles
Tiempo de ejecución | ID de entorno de ejecución | Pilas | Imagen base de tiempo de ejecución |
---|---|---|---|
Ruby 3.4 | ruby34 |
|
|
Ruby 3.3 | ruby33 |
|
|
Ruby 3.2 | 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 tiempo de ejecución
Puedes seleccionar uno de los tiempos de ejecución de Ruby admitidos para tu función durante la implementación.
Puedes seleccionar una versión del tiempo de ejecución mediante la Google Cloud consola o la CLI de gcloud. Haga clic en la pestaña para ver las instrucciones sobre cómo usar la herramienta que elija:
gcloud
Especifica la imagen base de Ruby de tu función con la marca --base-image
al desplegarla. Por ejemplo:
gcloud run deploy FUNCTION \
--source . \
--function FUNCTION_ENTRYPOINT \
--base-image ruby34
Sustituye:
FUNCTION con el nombre de la función que vas a implementar. Puedes omitir este parámetro por completo, pero se te pedirá el nombre si lo haces.
FUNCTION_ENTRYPOINT con el punto de entrada de tu función en el 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 completo que exista en el código fuente.
Para obtener instrucciones detalladas sobre cómo desplegar una función con la CLI de gcloud, consulta Desplegar funciones en Cloud Run.
Consola
Puedes seleccionar una versión del tiempo de ejecución al crear o actualizar una función de Cloud Run en la Google Cloud consola. Para obtener instrucciones detalladas sobre cómo desplegar una función, consulta Desplegar funciones en Cloud Run.
Para seleccionar un tiempo de ejecución en la consola Google Cloud al crear una función, sigue estos pasos:
En la Google Cloud consola, ve a la página Cloud Run:
Haz clic en Escribir una función.
En la lista Tiempo de ejecución, selecciona una versión del tiempo de ejecución de Ruby.
Haz clic en Crear y espera a que Cloud Run cree el servicio con una revisión de marcador de posición.
La consola te redirigirá a la pestaña Fuente, donde podrás ver el código fuente de tu función. Haz clic en Guardar y volver a implementar.
Para obtener instrucciones detalladas sobre cómo actualizar la versión del tiempo de ejecución después de implementar la función, consulta Volver a implementar código fuente nuevo.
Estructura del código fuente
Para que las funciones de Cloud Run encuentren la definición de tu función, el código fuente debe seguir una estructura específica. Para obtener más información, consulta Escribir funciones de Cloud Run.
Especificar dependencias
Las funciones de Cloud Run escritas en Ruby usan bundler para acceder a las dependencias.
Functions Framework es una dependencia obligatoria para todas las funciones. Aunque Cloud Run Functions lo instala en tu nombre cuando se crea la función, te recomendamos que lo incluyas como dependencia explícita para mayor claridad.
Si tu función depende de dependencias privadas, te recomendamos que hagas una réplica de functions-framework
en tu registro privado. Incluye functions-framework
como dependencia de tu función para evitar instalar el paquete desde Internet.
Cada función debe proporcionar un Gemfile
que especifique la gema functions_framework
, así como cualquier otra gema 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 que Gemfile
.
Cuando despliegues tu función, Cloud Run descargará e instalará las dependencias declaradas en Gemfile
y Gemfile.lock
mediante bundler
.
El archivo Gemfile
muestra los paquetes que necesita tu función, así como las restricciones de versión opcionales. Para obtener más información, 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"
Empaquetar dependencias locales
También puedes empaquetar e implementar dependencias junto con tu función. Este método es útil si tu dependencia no está disponible con el gestor de paquetes rubygems.
Para empaquetar una gema de forma local, inclúyela en un directorio de la estructura de directorios de tu función y proporciona la ruta en la entrada Gemfile
de la dependencia. El directorio gem debe incluir un archivo gemspec
válido y debe estar ubicado en la jerarquía de directorios de la función para que su código se implemente junto con la función. Por ejemplo, puedes usar una estructura de directorios como la siguiente:
myfunction/ ├── Gemfile ├── Gemfile.lock ├── app.rb └── my_private_gem/ ├── lib/ | └── my_private_gem.rb └── my_private_gem.gemspec
La entrada Gemfile
podría tener este aspecto:
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.