Passei os últimos meses mexendo bastante com Gemfiles e Gemfile.locks enquanto desenvolvia uma ferramenta de atualização de dependência automatizada 1 . O abaixo está longe de ser definitivo, mas é um bom ponto de partida para entender o formato Gemfile.lock. Você também pode verificar o código-fonte do analisador de arquivos de bloqueio do Bundler .
Você encontrará os seguintes títulos em um arquivo de bloqueio gerado pelo Bundler 1.x:
GEM (opcional, mas muito comum)
Essas são dependências originárias de um servidor Rubygems. Esse pode ser o principal índice Rubygems, no Rubygems.org, ou pode ser um índice personalizado, como os disponíveis no Gemfury e outros. Nesta seção, você verá:
remote:
uma ou mais linhas especificando a localização dos índices Rubygems
specs:
uma lista de dependências, com seu número de versão e as restrições em quaisquer subdependências
GIT (opcional)
Essas são dependências originárias de um determinado git remote. Você verá uma seção diferente para cada controle remoto do git e, em cada seção, verá:
remote:
o controle remoto git. Por exemplo,git@github.com:rails/rails
revision:
a referência de confirmação para a qual o Gemfile.lock está bloqueado
tag:
(opcional) a tag especificada no Gemfile
specs:
a dependência git encontrada neste controle remoto, com seu número de versão e as restrições em quaisquer subdependências
CAMINHO (opcional)
Essas são dependências originárias de um dado path
, fornecidas no Gemfile. Você verá uma seção diferente para cada dependência de caminho e, em cada seção, verá:
remote:
o caminho. Por exemplo,plugins/vendored-dependency
specs:
a dependência git encontrada neste controle remoto, com seu número de versão e as restrições em quaisquer subdependências
PLATAFORMAS
A plataforma Ruby contra a qual o Gemfile.lock foi gerado. Se alguma dependência no Gemfile especificar uma plataforma, elas somente serão incluídas no Gemfile.lock quando o arquivo de bloqueio for gerado nessa plataforma (por exemplo, através de uma instalação).
DEPENDÊNCIAS
Uma lista das dependências especificadas na Gemfile
, juntamente com a restrição de versão especificada lá.
Dependências especificadas com uma fonte que não seja o principal índice Rubygems (por exemplo, dependências git, baseadas em caminhos, dependências) têm uma !
que significa que estão "fixadas" a essa fonte 2 (embora às vezes seja necessário procurar no Gemfile para determinar em).
VERSÃO RUBY (opcional)
A versão Ruby especificada no Gemfile, quando este Gemfile.lock foi criado. Se uma versão do Ruby for especificada em um .ruby_version
arquivo, esta seção não estará presente (pois o Bundler considerará o Gemfile / Gemfile.lock independente da versão do Ruby do instalador).
PACOTADO COM (Empacotador> = v1.10.x)
A versão do Bundler usada para criar o Gemfile.lock. Usado para lembrar os instaladores de atualizarem sua versão do Bundler, se for mais antiga que a versão que criou o arquivo.
FONTE DE PLUGIN (opcional e muito rara)
Em teoria, um Gemfile pode especificar plugins do Bundler, bem como o gems 3 , que seriam listados aqui. Na prática, não conheço nenhum plug-in disponível em julho de 2017. Esta parte do Bundler ainda está em desenvolvimento ativo!
- https://dependabot.com
- https://github.com/bundler/bundler/issues/4631
- http://andre.arko.net/2012/07/23/towards-a-bundler-plugin-system/