ruby-on-rails gem rake

ruby on rails - La versión de rake ya activada, diferente a la que requiere Gemfile, previene los comandos de rake



ruby-on-rails (12)

Aquí está mi error:

rake aborted! Gem::LoadError: You have already activated rake 10.3.1, but your Gemfile requires rake 10.2.2. Prepending `bundle exec` to your command may solve this. /Users/AaronWilliamson/.gem/ruby/2.1.0/gems/bundler-1.5.3/lib/bundler/runtime.rb:34:in `block in setup'' /Users/AaronWilliamson/.gem/ruby/2.1.0/gems/bundler-1.5.3/lib/bundler/runtime.rb:19:in `setup'' /Users/AaronWilliamson/.gem/ruby/2.1.0/gems/bundler-1.5.3/lib/bundler.rb:119:in `setup'' /Users/AaronWilliamson/.gem/ruby/2.1.0/gems/bundler-1.5.3/lib/bundler/setup.rb:7:in `<top (required)>'' /Users/AaronWilliamson/Desktop/Ripelist-Classifieds/config/boot.rb:4:in `<top (required)>'' /Users/AaronWilliamson/Desktop/Ripelist-Classifieds/config/application.rb:1:in `<top (required)>'' /Users/AaronWilliamson/Desktop/Ripelist-Classifieds/Rakefile:4:in `<top (required)>'' LoadError: cannot load such file -- bundler/setup /Users/AaronWilliamson/Desktop/Ripelist-Classifieds/config/boot.rb:4:in `<top (required)>'' /Users/AaronWilliamson/Desktop/Ripelist-Classifieds/config/application.rb:1:in `<top (required)>'' /Users/AaronWilliamson/Desktop/Ripelist-Classifieds/Rakefile:4:in `<top (required)>'' (See full trace by running task with --trace)

No puedo ejecutar ninguna tarea de rake y esta parece ser la raíz de todos mis otros problemas. No fue así hace un par de días cuando estaba ejecutando comandos de rake. ¿Alguien puede explicar qué está pasando aquí y cómo hacer que mi aplicación vuelva a encarrilarse? He golpeado una pared Además, el bundle exec no soluciona la raíz del problema para mí. Nunca tuve que hacer eso en el pasado y todavía no funciona.


Como se mencionó en las respuestas anteriores, este es un problema simple que ocurre cuando su conjunto de gemas tiene una versión de rake más reciente que el número de versión que menciona su Gemfile.lock .

La forma más fácil de depurar esto es ejecutar la bundle update .

Las otras formas podrían ser eliminar Gemfile.lock y ejecutar la bundle install o simplemente eliminar la línea en Gemfile.lock que corresponde a la versión de rake e intentar la bundle install . Pero esto podría corromper a veces el Gemfile. Preferiría el primer método porque es el más seguro y el más fácil.


Escriba este comando:

bundle update rake


Me encuentro con el problema similar. Mi solución es cambiar la línea de la versión de rake "gem ''rake'', ''~> 10.3''" en el archivo Gemfile, eliminar Gemfile.lock y ejecutar ''bundler install'', el nuevo Gemfile.lock mostrará la nueva versión 10.3.1. Entonces todo estará bien.


Puedes usar rubygems-bundler para resolver esto. Ejecuta los siguientes comandos:

$ gem install rubygems-bundler

$ gem regenerate_binstubs

A continuación, intente su rastrillo de nuevo.


Según esta solución (que funcionó para mí): https://.com/a/23668399/4260090

Puedes resolverlo usando rubygems-bundler

Escriba estos comandos en su terminal:

$ gem install rubygems-bundler $ gem regenerate_binstubs

Debería funcionar ahora


Tuve un problema similar y era escéptico sobre la eliminación de una línea de mi Gemfile.lock , me pareció extraño y el inconveniente de incluir el bundle exec en cada comando de rake tampoco era una opción. Gemfile.lock esto entrando primero en mi Gemfile.lock para ver qué versión de rake estaba allí (en mi caso era 11.1.2). Mi pensamiento fue desinstalar rake e instalar esta versión. La ejecución de la gem uninstall rake dio esta salida:

Seleccione gema para desinstalar:

  1. rake-10.5.0
  2. rake-11.1.1
  3. rake-11.1.2
  4. rake-11.2.2
  5. rake-11.3.0
  6. Todas las versiones

Desinstalé rake-11.2.2 y rake-11.3.0 . Que soluciono mi problema


Una solución simple que funcionó para mí es simplemente ejecutar bundle update rake .


Utilizar esta:

gem install rake -v "version-you-want"


Ve al Gemfile.lock , encuentra el archivo de rake y actualiza la versión allí.

Tengo este error

Gem :: LoadError: Ya has activado el rake 11.2.2, pero tu Gemfile requiere un rake 11.1.2. Preponer el bundle exec a tu comando puede resolver esto.

Lo que hice fue cambiar la versión de rake en el Gemfile.lock de: rake (11.1.2) a rake (11.2.2) .

Todo funcionó bien después de eso.


Yo tenía el mismo error:

Ya ha activado el rake 12.0.0, pero su Gemfile requiere un rake 11.3.0. Preponer "bundle exec" a su comando puede resolver esto.

Lo solucioné ejecutando la bundle update

Esto actualizó la versión de rake a mi versión de rake activada y todo funcionó. ¡Espero que te funcione!


Gemfile.lock otra manera que es eliminar Gemfile.lock luego ejecutar bundle install . Después de eso ejecuto rake db:migrate . Y todo funciona bien.

Aunque no creo que eliminar Gemfile.lock sea ​​una mala práctica, pero puede serlo; quien sabe.


EDIT 2: Debería mirar la bundle update y cambiar un poco su flujo de trabajo. Consulte esta pregunta para obtener más ayuda.

Respuesta original

Este es un problema simple que ocurre cuando su conjunto de gemas tiene una versión de rake que es más reciente que el número de versión que menciona Gemfile.lock .

Como se menciona en el mensaje de error, puede usar bundle exec para que las cosas funcionen.

Mi solución en tales casos es simplemente eliminar Gemfile.lock si no me preocupan otras versiones de gemas y sus interminables dependencias. De lo contrario, puede intentar simplemente eliminando una línea en Gemfile.lock que habla sobre la versión de rake. ejecuta bundle install y el mundo debería ser un lugar feliz otra vez. ( Edición 2 : Ejecute la bundle update --source lugar de esto. No haga esto.)

PD: intente usar gemsets y organizar sus gemas con rvm para diferentes proyectos.

Editar

Prefiero usar rbenv ahora para administrar instalaciones y todas las gemas para un proyecto residen en el vendor/bundle usando la opción de bundle install --path . Más tarde alcance cada comando de gema con el bundle exec .

Por lo tanto, los rails s convierten en bundle exec rails s . Un poco más de mecanografía es, en mi opinión, mejor si significa que las cosas se mantendrán limpias y los conflictos como este no sucederán.