web-dev-qa-db-fra.com

Une version de rake déjà activée différente de celle requise par Gemfile empêche les commandes de rake

Voici mon erreur:

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)

Je ne peux pas exécuter de tâches de rake et cela semble être la racine de tous mes autres problèmes. Ce n'était pas comme ça il y a quelques jours quand j'exécutais des commandes de rake. Quelqu'un peut-il expliquer ce qui se passe ici et comment remettre mon application sur les rails? J'ai heurté un mur. De plus, bundle exec ne résout pas le problème à la racine. Je n'ai jamais eu à faire cela dans le passé et cela ne fonctionne toujours pas maintenant.

28
Aaron

EDIT 2: Vous devriez regarder bundle update et modifier un peu votre flux de travail. Reportez-vous à cette question pour obtenir de l'aide.


Réponse originale

C'est un problème simple qui se produit lorsque votre gemset a une version de rake plus récente que le numéro de version mentionné par votre Gemfile.lock.

Comme indiqué dans le message d'erreur, vous pouvez utiliser bundle exec pour que tout fonctionne correctement.

Ma solution dans de tels cas consiste simplement à supprimer Gemfile.lock si les autres versions de gem et leurs dépendances sans fin ne m'inquiètent pas trop. Sinon, vous pouvez simplement supprimer la seule ligne dans Gemfile.lock qui parle de la version de rake. lancez bundle install et le monde devrait redevenir un endroit heureux. (edit 2 _: Exécutez bundle update --source au lieu de cela. Ne le faites pas.)

PS: Essayez d’utiliser gemsets et d’organiser vos joyaux avec rvm pour différents projets.

Modifier

Je préfère utiliser rbenv now pour gérer les installations et toutes les pierres précieuses d’un projet résident dans vendor/bundle avec l’option bundle install --path. Portée ultérieure chaque commande gem avec bundle exec.

Par conséquent, Rails s devient bundle exec Rails s. Un peu plus de frappe est, à mon avis, préférable si cela signifie que les choses resteront propres et que des conflits tels que celui-ci ne se produisent pas.

34
manu29.d

Vous pouvez utiliser rubygems-bundler pour résoudre ce problème. Exécutez les commandes suivantes:

$ gem install rubygems-bundler

$ gem regenerate_binstubs

Ensuite, essayez à nouveau votre rake.

29
Benjamin Dunphy

Une solution simple qui a fonctionné pour moi consiste simplement à exécuter bundle update rake.

26
philoye

J'avais un problème similaire et j'étais sceptique quant à la suppression d'une ligne de mon Gemfile.lock, cela me paraissait hacky et le désagrément de l'ajout de bundle exec à chaque commande rake n'était pas une option non plus. J'ai corrigé cela en allant d'abord dans mon Gemfile.lock pour voir quelle version de rake était là (dans mon cas, c'était 11.1.2). Je pensais désinstaller rake et installer cette version. Lancer gem uninstall rake a donné cette sortie:

Sélectionnez gem pour désinstaller:

  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. Toutes les versions

J'ai désinstallé à la fois rake-11.2.2 et rake-11.3.0. Cela a résolu mon problème

15
Abass Sesay

Utilisez ceci:

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

Selon cette solution (qui a fonctionné pour moi): https://stackoverflow.com/a/23668399/4260090

Vous pouvez le résoudre en utilisant rubygems-bundler

Tapez ces commandes dans votre terminal:

$ gem install rubygems-bundler
$ gem regenerate_binstubs

Ça devrait marcher maintenant

1
Emmanuel Derozin

Tapez cette commande:

bundle update rake
1
Oleg Dikusar

Allez dans le Gemfile.lock, trouvez le fichier rake et mettez à jour la version.

J'ai eu cette erreur:

Gem :: LoadError: Vous avez déjà activé rake 11.2.2, mais votre Gemfile nécessite un rake 11.1.2. Ajout du bundle exec à votre commande peut résoudre ce problème.

Ce que j'ai fait était de changer la version de rake dans le Gemfile.lock de: rake (11.1.2) à rake (11.2.2)

Tout a bien fonctionné par la suite.

0
SJ LaPorte

bundle update rake fonctionne aussi pour moi. 

Mon erreur était Gem::LoadError: You have already activated rake 12.3.1, but your Gemfile requires rake 12.3.0. Prependingbundle execto your command may solve this.

0
gsumk

Je rencontre un problème similaire . Ma solution est de changer la ligne de la version de rake "gem 'rake', '~> 10.3'" dans le fichier Gemfile, supprimer Gemfile.lock et exécuter "bundler install", le nouveau Gemfile.lock montrera la nouvelle version 10.3.1. Alors tout ira bien.

0
rookie jack

Comme mentionné dans les réponses précédentes, il s'agit d'un problème simple qui se produit lorsque votre gemset a une version de rake plus récente que le numéro de version mentionné par votre Gemfile.lock.

Le moyen le plus simple de déboguer cela consiste à exécuter bundle update.

Vous pouvez également supprimer Gemfile.lock et exécuter bundle install ou simplement supprimer la ligne dans Gemfile.lock qui correspond à la version rake et essayer bundle install. Mais cela peut parfois corrompre le Gemfile. Je préférerais la première méthode parce que c'est la plus sûre et la plus facile.

0
Parardha Kumar

J'ai essayé d'une autre manière qui est de supprimer Gemfile.lock puis d'exécuter bundle install. Après cela, je lance rake db:migrate. Et tout fonctionne bien.

Bien que je ne pense pas que supprimer Gemfile.lock soit une mauvaise pratique, mais peut être; qui sait. 

0
egyamado

J'ai eu la même erreur:

Vous avez déjà activé rake 12.0.0, mais votre Gemfile nécessite rake 11.3.0. Le fait de prévoir "bundle exec" dans votre commande peut résoudre ce problème.

Je l'ai résolu en exécutant bundle update

cette mise à jour de la version rake à ma version rake activée et tout a fonctionné, j'espère que cela fonctionne pour vous!

0
bright