Bundler: versionamento semântico
O curso trata do versionamento semântico como o Bundler o aplica, usando o Gemfile e o Gemfile.lock de uma app Rails. Ele explica o que MAJOR, MINOR e PATCH prometem e por que o Rails usa um quarto segmento para versões de segurança. Os limites da restrição ~> são checados com a classe Gem::Requirement do Ruby, e restrições compostas são lidas no lockfile. O curso também mostra linhas do Gemfile sem restrição e o comportamento do bundle update com e sem nome de gem. Por fim, reproduz um conflito de versão entre duas gems num projeto de rascunho.
O que você vai aprender
- ✓O que MAJOR, MINOR e PATCH significam na especificação semver, e como versões pre-release são ordenadas
- ✓Onde a restrição ~> coloca o teto com dois segmentos e com três
- ✓Como funcionam restrições compostas, como >= 1.6, < 2, num gemspec ou Gemfile
- ✓Como o Bundler trata linhas do Gemfile sem string de versão
- ✓A diferença entre bundle update --all, bundle update NOME_DA_GEM e opções como --conservative
- ✓Como ler uma falha do resolvedor do Bundler e corrigir a restrição em conflito
O que Bundler e Gemfile deixou para este curso
A aula de fechamento de "Bundler e Gemfile", "Juntando tudo: do Gemfile à app rodando", diz o que aquele curso escolheu não ensinar:
Ler a aula completa grátis →Currículo
7 aulasO que Bundler e Gemfile deixou para este curso
Define o escopo: semver, limites do ~>, gems sem restrição, bundle update e um conflito de versão, com Bundler 2.6.8.
MAJOR.MINOR.PATCH: a regra
Explica o que MAJOR, MINOR e PATCH prometem, por que o Rails está em 8.1.3.1 e como pre-releases se ordenam.
O que o ~> trava, checado rodando
Roda o Gem::Requirement para mostrar os tetos do ~> com dois e três segmentos, além de restrições compostas do Gemfile.lock.
A maior parte deste Gemfile não trava nada
Mostra que 25 das 40 linhas do Gemfile não têm restrição e que o bundle outdated as lista como >= 0.
bundle update: o comando que o curso passado pulou
Compara bundle update --all com a atualização de uma gem, trata do --conservative e ordena gems desatualizadas por tamanho de bump.
Um conflito entre duas gems, reproduzido com segurança
Reproduz um conflito entre lexxy e rails num projeto de rascunho, lê a saída do resolvedor e corrige a restrição.
Juntando tudo: ler um bump de versão antes de confiar nele
Liga as aulas à leitura de bumps de versão antes de aplicá-los e apresenta um desafio em Ruby puro sobre a regra do ~>.