Ya has activado rake 0.9.0, pero tu Gemfile requiere rake 0.8.7

124

Estoy tratando de ejecutar el proyecto de rieles, me sale

Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

Si lo hago: "paquete de instalación"

pero me estoy poniendo

You have already activated rake 0.9.0, but your Gemfile requires rake 0.8.7

mientras se hace

rake db:migrate
Mujah Maskey
fuente

Respuestas:

245

Primero, verifique para asegurarse de que el rastrillo se menciona en su Gemfile. Si no es así, agréguelo y especifique la versión "que ya activó".

Luego, deberá indicarle al paquete que actualice la versión de rastrillo que está utilizando para su aplicación:

bundle update rake

Actualizará tu Gemfile.lockpara ti.

danneu
fuente
2
Esto no funcionó para mí. cuando ejecuto este comando, hace exactamente lo mismo que 'paquete de instalación' y muestra que está usando la misma versión de rake. No lo actualiza.
EE33
55
Tuve que agregar la gema 'rake', 'version #' a mi gemfile y ejecutar 'bundle update rake' para que mi gemfile.lock se actualizara correctamente. Para su información, cualquiera que no pueda lograr que esta solución funcione para ellos.
EE33
44

Donde estás usando comandos de rastrillo como

rake db:migrate

Use esto en su lugar:

bundle exec rake db:migrate

este será el caso hasta que la última versión de rails y / o rake funcione bien en conjunto.

Precio de Floyd
fuente
3
La parte acerca de que "la última versión de rails y / o rake" funciona bien juntos solo tiene significado en un punto específico, sin nombre, en el tiempo, y bajo algunos supuestos específicos sobre el flujo de trabajo en uso. Creo que esta implicación es "estás usando rieles de borde sangriento y el rastrillo aún no se ha puesto al día". Pero ese caso también puede resolverse mediante los enfoques "paquete ejecutivo" o "editar Gemfile", y estos enfoques también resuelven el problema cuando no hay problemas de compatibilidad intrínseca, sino solo un historial de flujo de trabajo confuso.
jackr
24

Doy las gracias a Dobry Den, saludos amigo. pero poco más tuve que hacer. Aquí hay una solución (funciona para mí). Había agregado

gem 'rake','0.8.7'

en Gemfile, que no estaba allí, pero mi nueva versión de rails instala automáticamente rake (0.9.0).

después de haber eliminado rake0.9.0 gem uninstall rake y después de hacerlo bundle update rake, puedo crear y migrar la base de datos.

Mujah Maskey
fuente
7

Especifique la versión que desea en su Gemfile.

gem 'rake', '0.9.0' 

luego

bundle update rake

necesitas usar bundle exec para ejecutar tu tarea de rake

bundle exec rake db:migrate
hacksignal
fuente
Parece no "desactivar" la versión posterior. Sin embargo, eliminar Rake por completo y reinstalar los trabajos.
JosephK
6

Oh mira, es el futuro. Para mí, se quejaba de que tenía instalado rake 10.x cuando quería 0.9.5. No estoy muy seguro, no estoy lo suficientemente familiarizado con Ruby como para profundizar en lo que sucedió con los números de versiones recientes, pero lo que hice fue:

gem uninstall rake
gem install rake -v 0.9.5

para forzar al sistema a instalar la versión de rastrillo que la aplicación quería (para mí era Octopress).

subdigito
fuente
2
El futuro llama, y ​​quiere tomar prestados tus pantalones Hammer.
Keith Layne
Hola, es el futuro otra vez. Escuché que los pantalones Hammer finalmente están regresando.
subdigito
5

Tuve este problema (con otra gema que no era rastrillo) y pude solucionarlo

gem uninstall <complaining gem>
gem install <complaining gem>

bundle install
bundle update

Tenga en cuenta que la palabra clave 'sudo' no se usó (es decir, instalación de paquete sudo) ya que eso puede colocar su gema en directorios donde su aplicación de rieles podría no estar buscando.

glaciar
fuente
3

Si entiendo lo que no está preguntando, debe abrir su Gemfilearchivo y cambiar la línea ...

gem 'rake', '0.8.7'

...a...

gem 'rake', '0.9.0'
Olivier L.
fuente
¿Qué pasa si quiero usar 0.8.7 en lugar de 0.9?
Kir
66
la gema de rastrillo no se especifica en su Gemfile de forma predeterminada ya que es una dependencia de Rails. si actualizó la gema de rastrillo a 0.9.0, todavía tiene la gema 0.8.7 en su sistema (verifique con gem list). Estoy bastante seguro de que si gem 'rake', '0.8.7'todavía se especifica en su Gemfile.lock, seguirá utilizando la gema 0.8.7 sin ningún problema. si no, intente ejecutar bundledespués de agregar gem 'rake', '~> 0.8.7'a su Gemfile (no .lock) y vea si dice algo.
danneu
Estoy de acuerdo con @Dobry Den.
Olivier L.
gema 'rastrillo' no está definido. Toma uno predeterminado si tengo múltiples Gem Rake (0.8.7 y 0.9.0). ¿Podemos hacer el predeterminado al anterior?
Mujah Maskey
3

Agregue esto a su Gemfile

# Rake 0.9.0 break Rails.
gem "rake", "!= 0.9.0"

Y luego desinstalar rake-0.9.0


fuente