Abhängigkeiten in Ruby angeben
In Ruby geschriebene Cloud Functions-Funktionen verwenden Bundler, um auf Abhängigkeiten zuzugreifen. Abhängigkeiten können heruntergeladen werden, wenn die Funktion bereitgestellt wird, oder zusammen mit der Funktion lokal verpackt.
Jede Funktion muss eine Gemfile
bereitstellen, die das Gem functions_framework
und alle weiteren von der Funktion benötigten Gems angibt. Gemfile
muss sich im selben Verzeichnis befinden wie die Datei app.rb
, die den Funktionscode enthält. Darüber hinaus muss Ihre Funktion eine Sperrdatei bereitstellen, in der alle transitiven Abhängigkeiten und ihre exakten Versionen angegeben sind. Die Datei Gemfile.lock
befindet sich auch im selben Verzeichnis, in dem sich auch die Gemfile
befindet.
Wenn Sie die Funktion bereitstellen, lädt Cloud Functions die in Gemfile
und Gemfile.lock
deklarierten Abhängigkeiten mithilfe von bundler
herunter und installiert sie.
Unter Gemfile
sind die für Ihre Funktion erforderlichen Pakete sowie optionale Versionseinschränkungen aufgelistet. Weitere Informationen finden Sie in der Gemfile-Referenz.
Folgendes ist ein Gemfile
-Beispiel.
source "https://rubygems.org" gem "functions_framework", "~> 0.7" gem "google-cloud-storage", "~> 1.29"
Mit dem folgenden Befehl installieren Sie das Gem functions_framework
und andere Abhängigkeiten:
bundle install
Die Datei Gemfile.lock
wird von Bundler generiert, wenn die Abhängigkeiten analysiert werden. Die genauen Versionen der jeweiligen Gem werden nicht mehr fixiert. Dadurch wird beispielsweise sichergestellt, dass Ihre Funktion mit den gleichen Abhängigkeitsversionen wie die in Ihren lokalen Tests bereitgestellt wird. Das genaue Format von Gemfile.lock
ist für Bundler privat und darf nicht manuell bearbeitet werden.
Wenn Sie Bundles bereits zum Installieren Ihrer Abhängigkeiten verwendet und Tests lokal ausgeführt haben, ist wahrscheinlich bereits eine Gemfile.lock
-Datei vorhanden. Wenn nicht, können Sie mit dem folgenden Befehl ein Zertifikat erstellen:
bundle lock
Das Functions Framework ist eine erforderliche Abhängigkeit für alle Funktionen. Obwohl Cloud Run-Funktionen sie bei der Erstellung der Funktion für Sie installiert, empfehlen wir, sie zur Klarstellung hinzuzufügen.
Wenn Ihre Funktion private Abhängigkeiten benötigt, sollten Sie functions-framework
in Ihre private Registry spiegeln. Fügen Sie die gespiegelte functions-framework
als Abhängigkeit zu Ihrer Funktion hinzu, um die Installation des Pakets aus dem öffentlichen Internet zu vermeiden.
Paket mit lokalen Abhängigkeiten erstellen
Sie können auch ein Paket mit der Funktion und ihren Abhängigkeiten erstellen und bereitstellen. Dieser Ansatz ist nützlich, wenn Ihre Abhängigkeit nicht über den Rubygem-Paketmanager verfügbar ist.
Wenn Sie ein Gem lokal packen möchten, fügen Sie es in ein Verzeichnis in der Verzeichnisstruktur Ihrer Funktion ein und geben Sie den Pfad im Eintrag Gemfile
der Abhängigkeit an. Das Gem-Verzeichnis muss eine gültige gemspec
-Datei enthalten. Es muss sich in der Verzeichnishierarchie der Funktion befinden, damit der Code zusammen mit der Funktion bereitgestellt wird. Beispielsweise können Sie eine Verzeichnisstruktur verwenden, die so aussieht:
myfunction/ ├── Gemfile ├── Gemfile.lock ├── app.rb └── my_private_gem/ ├── lib/ | └── my_private_gem.rb └── my_private_gem.gemspec
Der Eintrag für Gemfile
könnte so aussehen:
source "https://rubygems.org" gem "functions_framework", "~> 0.7" gem "my_private_gem", path: "./my_private_gem"
Weitere Informationen zum Verweisen auf lokale Gem-Pfade finden Sie in der Gemfile-Referenz.