Lors de l'exécution, rake
j'obtiens cette erreur:
Vous avez déjà activé rake 0.9.2, mais votre Gemfile nécessite rake 0.8.7. Pensez à utiliser bundle exec.
Utiliser bundle exec rake
au lieu de rake
semble fonctionner, mais est-ce le meilleur moyen de résoudre ce problème?
Réponses:
L'utilisation
bundle exec
est la bonne façon de faire cela.Fondamentalement, ce qui se passe, c'est que vous avez mis à jour rake à 0.9.2 qui entre maintenant en conflit avec la version spécifiée dans votre Gemfile. Auparavant, la dernière version de
rake
vous correspondait à la version de votre Gemfile, vous n'avez donc reçu aucun avertissement lors de la simple utilisationrake
.Yehuda Katz (l'un des développeurs originaux de Bundler) explique tout dans ce billet de blog .
Pour éviter de taper
bundle exec ...
tout le temps, vous pouvez configurer un alias ou une fonction dans votre shell pour les commandes que vous utilisez couramment avec Bundler. Par exemple, voici ce que j'utilise pour Rake:la source
Si vous avez une raison de conserver la version actuelle de rake (ou tout autre gemme à l'origine du problème), matt a raison, la meilleure façon de le faire est d'exécuter
bundle exec
. Cela utilise la version spécifiée dans votre Gemfile au lieu d'utiliser la dernière version de la gemme que vous avez installée. (nathan.f77 a une bonne solution ci - dessous si vous ne voulez pas taper àbundle exec
chaque fois que vous exécutez rake)Sinon, s'il n'y a aucune raison de ne pas mettre à jour rake, vous pouvez exécuter
Cela mettra à jour votre Gemfile.lock pour utiliser la dernière version de rake au lieu de devoir l'exécuter à
bundle exec
chaque fois.Remarque: si vous exécutez uniquement,
bundle update
cela mettra à jour toutes les gemmes de votre Gemfile au lieu de simplement rake, ce qui n'est probablement pas ce que vous voulez, car si quelque chose se brise dans votre application, vous ne saurez pas quelle mise à jour de gemme l'a causé.La façon la moins recommandée de conserver l'ancienne version sans avoir à l'utiliser
bundle exec
est de désinstaller les nouvelles versions de rake.Cela fonctionne, mais si vous travaillez avec plusieurs applications qui utilisent différentes versions de rake, cela peut être pénible car vous devrez constamment installer et désinstaller différentes versions.
la source
gem install rake
. Puisgem uninstall rake
et choisissez 0.9.2.bundle update
mettra également à jour tous les gemmes sans versions spécifiées vers la dernière version disponible. Ce n'est peut-être pas ce que vous voulez.bundle update rake
serait plus precies.public_suffix
au lieu derake
. La course à piedbundle update public_suffix
n'a malheureusement aucun effet.Essayer
bundle clean --force
Il supprime tous les joyaux système qui ne figurent pas dans cet ensemble
la source
La dernière fois que cela m'est arrivé, j'avais mis à jour toutes mes gemmes. J'ai fait un
gem uninstall rake
et il a répertorié les options de version. J'ai choisi le plus récent et je n'ai plus eu besoin de l'utiliserbundle exec
.Fondamentalement, si vous l'utilisez,
bundle exec
il utilise n'importe quelle version de gem est installée par votre bundle, alors que contient le Gemfile. Sansbundle exec
il utilise la version par défaut de votre système.la source
Ooh! L'article Katz est excellent!
J'aime le mieux cette solution:
afin que vous puissiez maintenant taper
Pour quelqu'un comme moi qui développe des applications 2.3 et 3.0.9, cela me fait me sentir beaucoup mieux.
la source
bundle exec
est correct, mais vous ne voulez pas le taper à chaque fois.Vous pouvez mettre ceci dans votre .bashrc:
la source
Une autre façon de ne pas le taper à chaque fois est avec un Makefile, par exemple
la source