Abhängigkeiten in Ruby angeben

In Ruby geschriebene Cloud Run 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 Run 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.