traduccion ruby rubygems bundler

ruby - bundler traduccion



Ya has activado X, pero tu Gemfile requiere Y (6)

Cuando ejecuto rake obtengo este error:

Ya has activado el rastrillo 0.9.2, pero tu Gemfile requiere rastrillo 0.8.7. Considere el uso de bundle exec.

Usar bundle exec rake lugar de simplemente rake parece funcionar, pero ¿es la mejor manera de arreglar esto?


¡Oh! ¡El artículo de Katz es excelente!

Me gusta esta solución lo mejor:

bundle install --binstubs

para que ahora pueda escribir

bin/rake .stuff.

Para alguien como yo, que desarrolla aplicaciones 2.3 y 3.0.9, esto me hace sentir mucho mejor.


El uso de bundle exec es la forma correcta de hacerlo.

Básicamente, lo que sucede es que actualizaste el rastrillo a 0.9.2, que ahora entra en conflicto con la versión especificada en tu Gemfile. Anteriormente, la última versión de rake había coincidido con la versión en su Gemfile, por lo que no recibió ninguna advertencia cuando simplemente usaba rake .

Yehuda Katz (uno de los desarrolladores originales de Bundler) lo explica todo en esta publicación de blog .

Para evitar escribir bundle exec ... todo el tiempo, puede configurar un alias o función en su shell para los comandos que usa comúnmente con Bundler. Por ejemplo, esto es lo que uso para Rake:

$ type bake bake is a function bake () { bundle exec rake "$@" }


La última vez que me pasó esto, actualicé todas mis gemas. Hice un gem uninstall rake y enumeré opciones de versión. Escogí la más nueva, y luego ya no tuve que usar bundle exec .

Básicamente, si usas bundle exec , usa la versión de gem que el paquete instala, entonces, ¿qué hay en el Gemfile? Sin bundle exec usa la versión que prefiera su sistema.


Prueba bundle clean --force

Elimina todas las gemas del sistema que no están en este paquete


bundle exec es correcto, pero no desea escribirlo todo el tiempo.

Puedes poner esto en tu .bashrc:

# Automatically invoke bundler for rake, if necessary. rake() { if [ -e ./Gemfile.lock ]; then bundle exec rake "$@"; else /usr/bin/env rake "$@"; fi; }


Si tiene una razón para mantener la versión actual de rake (o cualquier otra gema que esté causando el problema), matt es correcta, la mejor manera de hacerlo es ejecutar bundle exec . Esto usa la versión especificada en su Gemfile en lugar de usar la versión más nueva de la gema que ha instalado. (nathan.f77 tiene una buena solución a below si no desea escribir bundle exec cada vez que ejecuta rake)

De lo contrario, si no hay motivo para no actualizar el rake, puede ejecutar

bundle update rake

Esto realmente actualizará su Gemfile.lock para usar la versión más nueva de rake en lugar de tener que ejecutar bundle exec todo el tiempo.

Nota: si ejecuta solo la bundle update esto actualizará todas las gemas en su Gemfile en lugar de solo rake, que probablemente no sea lo que usted desea, porque si algo se rompe en su aplicación no sabrá qué actualización lo causó.

La forma menos recomendada de mantener la versión anterior sin tener que usar bundle exec es desinstalar las versiones más nuevas de rake.

$ gem uninstall rake Select gem to uninstall: 1. rake-0.8.7 2. rake-0.9.2 3. All versions > 2 Successfully uninstalled rake-0.9.2

Esto funciona, pero si trabajas con varias aplicaciones que usan diferentes versiones de rake, esto puede ser un problema porque te encontrarás constantemente teniendo que instalar y desinstalar diferentes versiones.