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.