Spécifier les dépendances en Ruby

Les fonctions Cloud Run écrites en Ruby utilisent bundler pour accéder aux dépendances. Les dépendances peuvent être téléchargées lors du déploiement de votre fonction, ou empaquetées localement avec votre fonction.

Chaque fonction doit fournir un fichier Gemfile qui spécifie le functions_framework gem ainsi que tous les gems supplémentaires requis par la fonction. Gemfile doit se trouver dans le même répertoire que le fichier app.rb qui contient le code de votre fonction. En outre, votre fonction doit fournir un fichier verrouillé qui spécifie toutes les dépendances transitives et leurs versions exactes. Ce fichier, Gemfile.lock, se trouve également dans le même répertoire que Gemfile.

Lorsque vous déployez votre fonction, Cloud Run Functions télécharge et installe les dépendances déclarées dans Gemfile et Gemfile.lock à l'aide de bundler.

Le fichier Gemfile répertorie les packages requis par votre fonction, ainsi que les contraintes de version facultatives. Pour en savoir plus, consultez la documentation de référence sur le fichier Gemfile.

Voici une exemple de Gemfile :

source "https://rubygems.org"

gem "functions_framework", "~> 0.7"
gem "google-cloud-storage", "~> 1.29"

Exécutez la commande suivante pour installer le functions_framework gem et d'autres dépendances:

bundle install

Gemfile.lock est généré par Bundler lors de l'analyse de vos dépendances et fige les versions exactes de chaque gem à installer. Cela garantit, par exemple, que votre fonction est déployée avec les mêmes versions de dépendance que celles utilisées dans vos tests locaux. Le format exact de Gemfile.lock est privé à Bundler et ne doit pas être modifié manuellement.

Si vous avez déjà utilisé bundler pour installer vos dépendances et exécuter des tests localement, vous disposez probablement d'un fichier Gemfile.lock. Si ce n'est pas le cas, vous pouvez le générer en exécutant la commande suivante:

bundle lock

Le Functions Framework est une dépendance requise pour toutes les fonctions. Bien que Cloud Run Functions l'installe en votre nom lors de la création de la fonction, nous vous recommandons de l'inclure en tant que dépendance explicite pour plus de clarté.

Si votre fonction repose sur des dépendances privées, nous vous recommandons de mettre en miroir functions-framework dans votre registre privé. Incluez la valeur functions-framework mise en miroir en tant que dépendance à votre fonction pour éviter d'installer le package depuis l'Internet public.

Emballer les dépendances locales

Vous pouvez également empaqueter et déployer les dépendances avec votre fonction. Cette approche est utile si votre dépendance n'est pas disponible via le gestionnaire de packages Rubygems.

Pour empaqueter un gem localement, incluez-le dans un répertoire de la structure de répertoires de votre fonction et indiquez le chemin d'accès dans l'entrée Gemfile de la dépendance. Le répertoire gem doit inclure un fichier gemspec valide. Il doit se trouver dans la hiérarchie des répertoires de la fonction pour que son code soit déployé avec votre fonction. Par exemple, vous pouvez utiliser une structure de répertoires comme suit :

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

L'entrée Gemfile peut se présenter comme suit:

source "https://rubygems.org"

gem "functions_framework", "~> 0.7"
gem "my_private_gem", path: "./my_private_gem"

Pour en savoir plus sur la référence à des chemins d'accès aux gem locaux, consultez la documentation de référence sur le fichier Gemfile.