Ich habe in den letzten Monaten viel mit Gemfiles und Gemfile.locks herumgespielt, während ich ein automatisiertes Tool zur Aktualisierung von Abhängigkeiten 1 erstellt habe . Das Folgende ist alles andere als endgültig, aber es ist ein guter Ausgangspunkt für das Verständnis des Gemfile.lock-Formats. Möglicherweise möchten Sie auch den Quellcode für Bundlers Lockfile-Parser überprüfen .
Die folgenden Überschriften finden Sie in einer von Bundler 1.x generierten Sperrdatei:
GEM (optional, aber sehr häufig)
Dies sind Abhängigkeiten, die von einem Rubygems-Server stammen. Dies kann der Hauptindex von Rubygems bei Rubygems.org sein, oder es kann sich um einen benutzerdefinierten Index handeln, wie er beispielsweise von Gemfury und anderen erhältlich ist. In diesem Abschnitt sehen Sie:
remote:
eine oder mehrere Zeilen, die den Speicherort der Rubygems-Indizes angeben
specs:
Eine Liste der Abhängigkeiten mit ihrer Versionsnummer und den Einschränkungen für alle Unterabhängigkeiten
GIT (optional)
Dies sind Abhängigkeiten, die von einer bestimmten Git-Fernbedienung stammen. Sie sehen einen anderen dieser Abschnitte für jede Git-Fernbedienung und in jedem Abschnitt sehen Sie:
remote:
die Git-Fernbedienung. Z.B,git@github.com:rails/rails
revision:
Die Festschreibungsreferenz, für die Gemfile.lock gesperrt ist
tag:
(optional) das in der Gemfile angegebene Tag
specs:
Die auf dieser Fernbedienung gefundene Git-Abhängigkeit mit ihrer Versionsnummer und die Einschränkungen für eventuelle Unterabhängigkeiten
PFAD (optional)
Dies sind Abhängigkeiten, die von einer bestimmten path
in der Gem-Datei bereitgestellten Abhängigkeit stammen . In jedem Abschnitt wird für jede Pfadabhängigkeit ein anderer Abschnitt angezeigt. In jedem Abschnitt wird Folgendes angezeigt:
remote:
der Weg. Z.B,plugins/vendored-dependency
specs:
Die auf dieser Fernbedienung gefundene Git-Abhängigkeit mit ihrer Versionsnummer und die Einschränkungen für eventuelle Unterabhängigkeiten
PLATTFORMEN
Die Ruby-Plattform, gegen die Gemfile.lock generiert wurde. Wenn Abhängigkeiten in der Gemfile eine Plattform angeben, werden sie nur dann in die Gemfile.lock aufgenommen, wenn die Lockfile auf dieser Plattform generiert wird (z. B. durch eine Installation).
ABHÄNGIGKEITEN
Eine Liste der Abhängigkeiten, die in angegeben sind Gemfile
, sowie die dort angegebene Versionsbeschränkung.
Abhängigkeiten, die mit einer anderen Quelle als dem Rubygems-Hauptindex angegeben wurden (z. B. Git-Abhängigkeiten, pfadbasierte Abhängigkeiten), haben eine, !
was bedeutet, dass sie an diese Quelle 2 "angeheftet" sind (obwohl man manchmal in der Gemfile nachsehen muss, um sie zu bestimmen).
RUBINVERSION (optional)
Die Ruby-Version, die in der Gemfile angegeben wurde, als diese Gemfile.lock erstellt wurde. Wenn .ruby_version
stattdessen eine Ruby-Version in einer Datei angegeben ist, ist dieser Abschnitt nicht vorhanden (da Bundler die Datei Gemfile / Gemfile.lock als unabhängig von der Ruby-Version des Installationsprogramms betrachtet).
BUNDLED WITH (Bundler> = v1.10.x)
Die Version von Bundler, mit der Gemfile.lock erstellt wurde. Wird verwendet, um Installateure daran zu erinnern, ihre Bundler-Version zu aktualisieren, wenn sie älter als die Version ist, mit der die Datei erstellt wurde.
PLUGIN SOURCE (optional und sehr selten)
Theoretisch kann eine Gem-Datei Bundler-Plugins sowie Gems 3 angeben , die dann hier aufgelistet werden. In der Praxis sind mir seit Juli 2017 keine verfügbaren Plugins bekannt. Dieser Teil von Bundler befindet sich noch in der aktiven Entwicklung!
- https://dependabot.com
- https://github.com/bundler/bundler/issues/4631
- http://andre.arko.net/2012/07/23/towards-a-bundler-plugin-system/