Actualiza solo una gema con bundler

233

Utilizo bundler para administrar las dependencias en mi aplicación rails, y tengo una gema alojada en un repositorio de git incluida de la siguiente manera:

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

Para actualizar esta gema, ejecuto bundle updatepero también actualiza todas las gemas mencionadas en Gemfile. Entonces, ¿cuál es el comando para actualizar solo una gema específica?

marinero
fuente

Respuestas:

354

Aquí puede encontrar una buena explicación sobre la diferencia entre

Actualiza ambas gemas y dependencias:

bundle update gem-name 

o

Actualiza exclusivamente la gema:

bundle update --source gem-name

junto con algunos buenos ejemplos de posibles efectos secundarios.

Actualizar

Como dice la respuesta de @ Tim, a partir de Bundler 1.14 la forma oficial de hacerlo es con bundle update --conservative gem-name.

mseebacher
fuente
19
Tenga cuidado, "actualizar gemas y dependencias" significa actualizar los rieles si es una dependencia y probablemente no quiera eso. --source solo actualizará la gema especificada como parámetro. Por lo tanto, es mejor en la mayoría de las situaciones.
1.44mb
¿Cómo especificar la versión?
Oshan Wisumperuma
1
@OshanWisumperuma Especifique la versión en Gemfile o posiblemente Gemfile.lock antes de ejecutar estos comandos de paquete
Harry Wood
185

La forma de hacerlo es ejecutar el siguiente comando:

bundle update --source gem-name
dukz
fuente
3
Esto es exactamente lo que necesitaba, tengo una gema privada y solo necesito actualizar la gema en sí sin actualizar las dependencias después de hacer algunos cambios en la gema privada.
Soy un dragón rana el
30

Parece que con las versiones más nuevas de bundler (> = 1.14) es:

bundle update --conservative gem-name
Tim
fuente
nota: este comando actualizará una gema sin dependencias de ella
mmike
24

Simplemente necesita especificar el nombre de la gema en la línea de comando:

bundle update gem-name
Brandan
fuente
1
Extraño. Eso es lo que bundle help updatedice hacer. ¿Qué versión de bundler estás usando?
Brandan
40
bundle update gem-nameactualizará la gema y "cualquiera de sus dependencias".
yaka
5

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

Esto también funciona para las dependencias.

Linus
fuente
1
¿Hay alguna manera de actualizarlo a una versión específica? El --major, --minory --patchbanderas actualizará automáticamente a la versión más reciente posible.
user2490003
2

Me he usado bundle update --sourcedurante mucho tiempo, pero hay escenarios en los que no funciona. Por suerte, hay una gema llamadabundler-patch que tiene el objetivo de corregir esta deficiencia.

También escribí una breve publicación de blog sobre cómo usar bundler-patchy por qué bundle update --sourceno funciona de manera consistente. Además, asegúrese de revisar una publicación de chrismo que explica con gran detalle lo que hace la --sourceopción.

Kitto
fuente
0

bundler update --source gem-name actualizará el hash de revisión en Gemfile.lock que puede comparar con el último hash de confirmación de esa rama git (maestro de forma predeterminada).

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

se puede encontrar en github.com/organization/repo-name/commits/c810f4a2(usé taquigrafía de confirmación de 8 caracteres para la url)

shushugah
fuente