Bundler e Gemfile
Este curso explica como o Bundler gerencia as gems de que uma app Rails depende. Ele mostra como o Gemfile declara gems com restrições como ~> e >=, e como os grupos limitam gems a certos ambientes. Mostra também como o Bundler resolve todas as restrições ao mesmo tempo e grava as versões exatas no Gemfile.lock. Explica o que o bundle install faz quando o lock bate e quando o Gemfile muda. Por fim, trata de por que o bin/rails carrega as versões travadas via bundler/setup e de quando um script Ruby comum precisa de bundle exec.
O que você vai aprender
- ✓Como as restrições ~> e >= do Gemfile limitam as versões que o Bundler pode escolher
- ✓Como os grupos do Gemfile restringem gems a ambientes específicos
- ✓O que as quatro seções do Gemfile.lock registram e por que o arquivo vai para o Git
- ✓O que o bundle install e o bundle check fazem quando o lock bate ou o Gemfile muda
- ✓Por que o bin/rails nunca precisa de bundle exec e quando outros scripts precisam
- ✓Como inspecionar gems instaladas e travadas com gem list e bundle info
O que o Bundler faz
O curso Rails CLI: rails new fechou a aula de setup com isto: "Gemfile e Gemfile.lock já existem quando o bin/setup roda bundle install. O lock registra as versões exatas resolvidas das gems. Como isso funciona, e como gerenciar gems de propósito, fica para Bundler e Gemfile." Este é esse curso.
Ler a aula completa grátis →Currículo
7 aulasO que o Bundler faz
Por que 42 gems declaradas viram 160 instaladas, e como o Bundler resolve restrições e trava a resposta.
O Gemfile: declarando do que você depende
Como o Gemfile declara gems, o que as restrições ~> e >= permitem e como os grupos limitam ambientes.
Gemfile.lock: a fotografia resolvida
As quatro seções do Gemfile.lock, por que editá-lo à mão quebra o conjunto resolvido e por que ele vai para o commit.
bundle install: resolvendo e buscando
O que o bundle install faz quando o lock bate ou o Gemfile muda, e por que o bin/setup chama o bundle check antes.
bundle exec: por que bin/rails nunca precisa dele
Como o bundler/setup do config/boot.rb fixa as versões travadas para o bin/rails, e por que scripts comuns precisam de bundle exec.
Conferindo o Bundler neste projeto
Uso de gem list, bundle check, bundle install e bundle info para inspecionar as gems instaladas e travadas deste projeto.
Juntando tudo: do Gemfile à app rodando
Segue a cadeia de uma linha do Gemfile até a gem carregada e lista os temas que ficaram de fora.