Al ejecutar rake
me sale este error:
Ya has activado el rastrillo 0.9.2, pero tu Gemfile requiere el rastrillo 0.8.7. Considere usar el paquete exec.
Usar en bundle exec rake
lugar de simplemente rake
parece funcionar, pero ¿es la mejor manera de solucionarlo?
Respuestas:
Usar
bundle exec
es la forma correcta de hacer esto.Básicamente, lo que sucede es que has actualizado rake a 0.9.2, que ahora entra en conflicto con la versión especificada en tu Gemfile. Anteriormente, la última versión de
rake
usted coincidía con la versión en su Gemfile, por lo que no recibió ninguna advertencia cuando simplemente la usó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:fuente
Si tienes una razón para mantener la versión actual del rastrillo (o cualquier otra gema que esté causando el problema), Matt es correcto, la mejor manera de hacerlo es correr
bundle exec
. Esto usa la versión especificada en su Gemfile en lugar de usar la versión más reciente de la gema que ha instalado. (nathan.f77 tiene una buena solución a continuación si no desea escribirbundle exec
cada vez que ejecuta rake)De lo contrario, si no hay ninguna razón para no actualizar rake, puede ejecutar
Esto realmente actualizará su Gemfile.lock para usar la versión más nueva de rake en lugar de tener que ejecutar
bundle exec
cada vez.Nota: si corres solo
bundle update
esto, actualizará todas las gemas en su Gemfile en lugar de solo rake, lo que probablemente no sea lo que desea, porque si algo se rompe en su aplicación, no sabrá qué actualización de gemas 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.Esto funciona, pero si está trabajando con varias aplicaciones que usan diferentes versiones de rake, esto puede ser un problema porque constantemente tendrá que instalar y desinstalar diferentes versiones.
fuente
gem install rake
. Luegogem uninstall rake
y eligió 0.9.2.bundle update
también actualizará cualquier gema sin versiones especificadas a la última versión disponible. Eso puede no ser lo que quieres.bundle update rake
Sería más precies.public_suffix
lugar derake
. Correrbundle update public_suffix
no tiene ningún efecto, desafortunadamente.Tratar
bundle clean --force
Elimina todas las gemas del sistema que no están en este paquete
fuente
La última vez que me sucedió esto, actualicé todas mis gemas. Hice una
gem uninstall rake
y enumeró las opciones de versión. Elegí el más nuevo, y luego no tuve que usarbundle exec
más.Básicamente, si lo usa
bundle exec
, usa cualquier versión de gema instalada por su paquete, entonces, ¿qué hay en el Gemfile? Sinbundle exec
él, utiliza cualquier versión que sea la predeterminada de su sistema.fuente
¡Oh! ¡El artículo de Katz es excelente!
Me gusta esta solución lo mejor:
para que ahora puedas escribir
Para alguien como yo que está desarrollando aplicaciones 2.3 y 3.0.9, esto me hace sentir mucho mejor.
fuente
bundle exec
es correcto, pero no quieres escribirlo todo el tiempo.Puedes poner esto en tu .bashrc:
fuente
Otra forma de no escribirlo todo el tiempo es con un Makefile, por ejemplo
fuente