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?

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.


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

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

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

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.


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.


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: git@github.com: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)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.