Al ejecutar rakeme 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 rakelugar de simplemente rakeparece funcionar, pero ¿es la mejor manera de solucionarlo?

Respuestas:
Usar
bundle execes 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
rakeusted 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 execcada 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 execcada vez.Nota: si corres solo
bundle updateesto, 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 execes 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 rakey eligió 0.9.2.bundle updatetambién actualizará cualquier gema sin versiones especificadas a la última versión disponible. Eso puede no ser lo que quieres.bundle update rakeSería más precies.public_suffixlugar derake. Correrbundle update public_suffixno tiene ningún efecto, desafortunadamente.Tratar
bundle clean --forceElimina 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 rakey enumeró las opciones de versión. Elegí el más nuevo, y luego no tuve que usarbundle execmá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 execes 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