O que Bundler e Gemfile deixou para este curso
Um adiamento, citado
A aula de fechamento de "Bundler e Gemfile", "Juntando tudo: do Gemfile à app rodando", diz o que aquele curso escolheu não ensinar:
Publicar uma gem, resolver um conflito de versão real entre duas gems que não conseguem concordar, e comandos mais avançados do Bundler como
bundle updatenão eram trabalho deste curso. O trabalho deste curso era o caminho do dia a dia: declarar uma dependência, entender o que foi travado, e saber quandobundle execimporta, terreno sólido o bastante pra construir em cima depois.
Dois desses três temas adiados são trabalho deste curso. Publicar uma gem continua fora do escopo aqui também, já que é uma habilidade diferente de versionamento.
O que aquele curso já cobriu, rapidamente
Um parágrafo de recapitulação, e não uma aula de novo. O ~>, a restrição pessimista, deixa o último segmento de versão informado subir e trava tudo à esquerda dele. Aquele curso mostrou isso com o gem "rails", "~> 8.1.3" deste app resolvendo para 8.1.3.1, e o gem "pg", "~> 1.1" resolvendo até 1.6.3. O >= define um piso sem teto: gem "puma", ">= 5.0" resolvia para 7.2.0 na época e resolve para 8.0.2 hoje. O Gemfile.lock é a foto resolvida, e o bundle install é o que a produz e confia nela. Este curso parte de tudo isso.
A versão do Bundler, neste app
$ tail -3 Gemfile.lock
BUNDLED WITH
2.6.8
Isso vem do Gemfile.lock deste projeto. Os comandos deste curso rodaram com esse Bundler, o 2.6.8.
O que este curso cobre
A aula 2 trata da especificação semver em si, MAJOR.MINOR.PATCH, e das gems deste app que a seguem e, num caso, de propósito não seguem. A aula 3 checa o limite exato do ~> contra a classe Gem::Requirement do próprio Ruby, e mostra restrições compostas que já estão no Gemfile.lock deste app. A aula 4 mostra que a maior parte do Gemfile deste app não fixa nada. A aula 5 trata do bundle update, o comando que o curso anterior pulou, usando a documentação do Bundler e a saída do bundle outdated deste app. A aula 6 monta e resolve um conflito de versão entre duas gems num projeto de rascunho descartável, nunca no deste app. A aula 7 junta tudo, com um pequeno desafio em Ruby puro que modela a regra da aula 3.
Como os exemplos foram checados
Os números de versão, as restrições e a saída do bundle outdated das aulas 1 a 5 vêm do Gemfile, do Gemfile.lock e de comandos rodados neste app quando este curso foi revisado. As versões mudam, então a sua execução vai mostrar outros números. O conflito da aula 6 foi reproduzido num projeto de rascunho separado.
Continue com a aula 2
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.
Com uma conta grátis você também tem os quizzes, seu progresso e suas anotações, e a discussão.