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, les fonctions Cloud Run 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 les fonctions Cloud Run l'installent 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.