Atualizar apenas uma jóia com o empacotador

233

Eu uso o bundler para gerenciar dependências no meu aplicativo rails e tenho uma gema hospedada em um repositório git incluído da seguinte maneira:

gem 'gem-name', :git => 'path/to/my/gem.git'

Para atualizar esta gema, eu executo, bundle updatemas ela também atualiza toda a gema mencionada no Gemfile. Então, qual é o comando para atualizar apenas uma gema específica?

marinheiro
fonte

Respostas:

354

Aqui você pode encontrar uma boa explicação sobre a diferença entre

Atualize gem e dependências:

bundle update gem-name 

ou

Atualize exclusivamente a gema:

bundle update --source gem-name

juntamente com alguns bons exemplos de possíveis efeitos colaterais.

Atualizar

Como a resposta de Tim diz, a partir do Bundler 1.14, o caminho oficialmente suportado para isso é bundle update --conservative gem-name.

mseebacher
fonte
19
Cuidado, "atualizar gemas e dependências" significa atualizar os trilhos se for uma dependência e você provavelmente não quiser. --source atualiza apenas a gema especificada como parâmetro. Portanto, é melhor na maioria das situações.
1.44mb
como especificar a versão?
Oshan Wisumperuma 16/08/19
1
@OshanWisumperuma Especifique a versão em Gemfile ou possivelmente Gemfile.lock antes de executar estes comandos do pacote
Harry Madeira
185

A maneira de fazer isso é executar o seguinte comando:

bundle update --source gem-name
dukz
fonte
3
Isso é exatamente o que eu precisava, tenho uma jóia particular e só precisa atualizar a jóia em si sem atualizar as dependências depois de fazer algumas alterações na jóia particular.
Eu sou um dragão sapo
30

Parece que nas versões mais recentes do bundler (> = 1.14) é:

bundle update --conservative gem-name
Tim
fonte
Nota: este comando atualizará uma gema sem dependências dela
mmike 4/18
24

Você só precisa especificar o nome da gema na linha de comando:

bundle update gem-name
Brandan
fonte
1
Estranho. É o que bundle help updatediz para fazer. Qual versão do bundler você está usando?
Brandan
40
bundle update gem-nameatualizará a gema e "qualquer uma de suas dependências".
perfil completo
5

bundle update gem-name [--major|--patch|--minor]

Isso também funciona para dependências.

Linus
fonte
1
Existe uma maneira de atualizá-lo para uma versão específica? A --major, --minor, e --patchbandeiras atualizá-lo automaticamente para a versão mais recente possível.
usar o seguinte comando
2

Eu me uso bundle update --sourcehá muito tempo, mas há cenários em que não funciona. Felizmente, existe uma gema chamada bundler-patchque tem o objetivo de corrigir essa falha.

Também escrevi um pequeno post sobre como usar bundler-patche por bundle update --sourceque não funciona de maneira consistente. Além disso, verifique um post do chrismo que explica em detalhes o que a --sourceopção faz.

Kitto
fonte
0

bundler update --source gem-name atualizará o hash de revisão no Gemfile.lock, que você pode comparar com o último hash de confirmação desse ramo git (mestre por padrão).

GIT remote: [email protected]:organization/repo-name.git revision: c810f4a29547b60ca8106b7a6b9a9532c392c954

pode ser encontrado em github.com/organization/repo-name/commits/c810f4a2(eu usei abreviação de 8 caracteres para confirmar o URL)

shushugah
fonte