Pasé los últimos meses jugando con Gemfiles y Gemfile.locks mucho mientras creábamos una herramienta de actualización automática de dependencias . Lo que sigue está lejos de ser definitivo, pero es un buen punto de partida para entender el formato Gemfile.lock. También es posible que desee verificar el código fuente de Bundler's lockfile parser.
Encontrarás las siguientes partidas en un fichero de bloqueo generada por Bündler 1.x:
GEM (opcional pero muy común)
Estas son las dependencias de origen desde un servidor Rubygems. Ese puede ser el índice principal de Rubygems, en Rubygems.org, o puede ser un índice personalizado, como los disponibles en Gemfury y otros.Dentro de esta sección se verá:
remote:
una o más líneas que especifican la ubicación del índice de Rubygems (s)
specs:
una lista de dependencias, con su número de versión y las limitaciones de ningún subdependencies
GIT (opcional)
Estos son dependencias procedentes de un mando a distancia git dado. Vas a ver una diferente de estas secciones para cada git remote, y dentro de cada sección verá:
remote:
el control remoto GIT. Por ejemplo, [email protected]:rails/rails
revision:
el cometer referencia la Gemfile.lock está bloqueado a
tag:
(opcional) la etiqueta especificada en el Gemfile
specs:
la dependencia git encontrado en este control remoto, con su número de versión, y las limitaciones en cualquier subdependencies
PATH (opcional)
Estos son dependencias de origen a partir de una dada path
, incluido en el Gemfile. Vas a ver una diferente de estas secciones para cada dependencia de la trayectoria, y dentro de cada sección verá:
remote:
el camino. Por ejemplo, plugins/vendored-dependency
specs:
la dependencia git encontrar en este mando a distancia, con su número de versión y las restricciones en cualquier subdependencies
PLATAFORMAS
la plataforma Rubí la Gemfile.lock se generó contra. Si alguna dependencia en el Gemfile especifica una plataforma, solo se incluirán en Gemfile.lock cuando se genere el archivo de bloqueo en esa plataforma (por ejemplo, a través de una instalación).
DEPENDENCIES
Una lista de las dependencias que se especifican en la Gemfile
, junto con la restricción de versión especificada allí.
Dependencias especificados con una fuente distinta que el índice principal Rubygems (por ejemplo, dependencias de GIT, basado en vía dependencias) tienen una !
que significa que están "clavados" a esa fuente (aunque a veces se debe mirar en el Gemfile para determinar en).
RUBY VERSION (opcional)
La versión de Ruby especificado en el Gemfile, cuando se creó esta Gemfile.lock.Si se especifica una versión de Ruby en un archivo .ruby_version
, esta sección no estará presente (ya que Bundler considerará que Gemfile/Gemfile.lock es independiente de la versión de Ruby del instalador).
AGRUPADOS CON (Bundler> = v1.10.x)
La versión de Bundler utilizado para crear el Gemfile.lock. Se usa para recordar a los instaladores que actualicen su versión de Bundler, si es anterior a la versión que creó el archivo.
PLUGIN FUENTE (opcional y muy raro)
En teoría, un Gemfile puede especificar plugins Bundler, así como gemas , que luego se enumeran aquí. En la práctica, no conozco ningún complemento disponible a partir de julio de 2017. ¡Esta parte de Bundler aún está en desarrollo activo!
- https://dependabot.com
- https://github.com/bundler/bundler/issues/4631
- http://andre.arko.net/2012/07/23/towards-a-bundler-plugin-system/
Esto no respondió a ninguna de sus preguntas, que está pidiendo sobre el formato de la Gemfile.lock, pero esto sólo describe lo que se hace. –