Especifica dependencias en Ruby
Las funciones de Cloud Run escritas en Ruby usan el agrupador para acceder a las dependencias. Las dependencias se pueden descargar cuando se implementa tu función o se empaquetan de forma local junto con ella.
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, las funciones de Cloud Run descargan y, luego, instalan
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"
Ejecuta el siguiente comando para instalar la gema functions_framework
y otras dependencias:
bundle install
El agrupador genera Gemfile.lock
cuando analiza tus dependencias y bloquea las versiones exactas de cada gema que se instalará. Esto garantiza, por ejemplo, que tu función se implementa con las mismas versiones de dependencia que las que se usan en tus pruebas locales. El formato exacto de Gemfile.lock
es privado para agrupadores y no se debe editar de forma manual.
Si ya usaste el agrupador para instalar tus dependencias y ejecutar pruebas localmente, es probable que ya tengas un archivo Gemfile.lock
. De lo contrario, puedes generar uno si ejecutas el siguiente comando:
bundle lock
Functions Framework es una dependencia obligatoria para todas las funciones. Aunque las funciones de Cloud Run las instala 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.
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.