Vous avez déjà activé rake 0.9.0, mais votre Gemfile nécessite rake 0.8.7

124

J'essaye de lancer un projet de rails, je reçois

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

Si je fais: "installation groupée"

mais je reçois

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

tout en faisant

rake db:migrate
Mujah Maskey
la source

Réponses:

245

Tout d'abord, assurez-vous que rake est mentionné dans votre Gemfile. Si ce n'est pas le cas, ajoutez-le et spécifiez la version "que vous avez déjà activée".

Ensuite, vous devrez dire à bundle de mettre à jour la version de rake qu'il utilise pour votre application:

bundle update rake

Il mettra à jour votre Gemfile.lockpour vous.

Danneu
la source
2
cela n'a pas fonctionné pour moi. quand j'exécute cette commande, cela fait exactement la même chose que «bundle install» et cela montre qu'il utilise la même version de rake. Il ne le met pas à jour.
EE33
5
J'ai dû ajouter gem 'rake', 'version #' à mon gemfile, et lancer 'bundle update rake' pour que mon gemfile.lock soit mis à jour correctement. FYI pour tous ceux qui ne pourraient pas faire fonctionner cette solution pour eux.
EE33
44

Où vous utilisez actuellement des commandes de rake comme

rake db:migrate

Utilisez plutôt ceci:

bundle exec rake db:migrate

ce sera le cas jusqu'à ce que la dernière version des rails et / ou du râteau fonctionne bien ensemble.

Prix ​​Floyd
la source
3
Le mot «la dernière version des rails et / ou du râteau» fonctionnant bien ensemble n'a de sens qu'à un moment précis, sans nom, dans le temps, et sous certaines hypothèses spécifiques sur le flux de travail utilisé. Je pense que cette implication est "vous utilisez des rails à la fine pointe de la technologie, et le râteau n'a pas encore rattrapé son retard". Mais ce cas peut également être résolu par les approches «bundle exec» ou «edit Gemfile», et ces approches résolvent également le problème lorsqu'il n'y a pas de problèmes de compatibilité intrinsèque, mais seulement un historique de flux de travail confus.
jackr
24

Je remercie Dobry Den, bravo mec. mais je n'avais guère plus à faire. voici la solution (fonctionne pour moi). J'avais ajouté

gem 'rake','0.8.7'

sur Gemfile, qui n'était pas là, mais ma nouvelle version de rails installe automatiquement rake (0.9.0).

après avoir supprimé rake0.9.0 par gem uninstall rake et après bundle update rake, je peux créer et migrer la base de données.

Mujah Maskey
la source
7

Spécifiez la version que vous souhaitez dans votre Gemfile.

gem 'rake', '0.9.0' 

puis

bundle update rake

vous devez utiliser bundle exec pour exécuter votre tâche de rake

bundle exec rake db:migrate
hacksignal
la source
Semble ne pas "désactiver" la dernière version. La suppression complète de Rake et la réinstallation fonctionnent cependant.
JosephK le
6

Oh regarde, c'est le futur. Pour moi, il se plaignait d'avoir installé rake 10.x alors qu'il voulait 0.9.5. Pas tout à fait sûr, pas assez familier avec Ruby pour vraiment creuser dans ce qui est arrivé aux numéros de version récents, mais ce que j'ai fait était:

gem uninstall rake
gem install rake -v 0.9.5

pour forcer le système à installer la version de rake que l'application voulait (pour moi c'était Octopress).

sous-chiffre
la source
2
L'avenir a appelé, et il veut emprunter votre pantalon Hammer.
Keith Layne
Salut, c'est encore le futur. J'entends que les pantalons Hammer font enfin leur retour.
sous
5

J'ai eu ce problème (avec un autre bijou qui n'était pas râteau) et j'ai pu le résoudre en

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

bundle install
bundle update

Notez que le mot-clé 'sudo' n'a pas été utilisé (c'est-à-dire. Sudo bundle install) car cela peut placer votre gemme dans des répertoires où votre application rails peut ne pas rechercher.

glacier
la source
3

Si je comprends ce que vous ne demandez pas, vous devez ouvrir votre Gemfilefichier et changer la ligne ...

gem 'rake', '0.8.7'

...à...

gem 'rake', '0.9.0'
Olivier L.
la source
Et si je veux utiliser 0.8.7 au lieu de 0.9?
Kir
6
le gem rake n'est pas spécifié par défaut dans votre Gemfile puisqu'il s'agit d'une dépendance Rails. si vous avez mis à jour la gemme rake à 0.9.0, vous avez toujours la gemme 0.8.7 sur votre système (vérifiez avec gem list). Je suis presque sûr que si gem 'rake', '0.8.7'est toujours spécifié dans votre Gemfile.lock, il utilisera toujours le gem 0.8.7 sans problème. sinon, essayez d'exécuter bundleaprès avoir ajouté gem 'rake', '~> 0.8.7'à votre Gemfile (pas .lock) et voyez si cela dit quelque chose.
danneu
Je suis d'accord avec @Dobry Den.
Olivier L.
gem 'rake' n'est pas défini. Il en prend un par défaut si j'ai plusieurs Gem Rake (0.8.7 et 0.9.0). Pouvons-nous passer par défaut à l'ancien?
Mujah Maskey
3

Ajoutez ceci à votre Gemfile

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

Et puis désinstallez rake-0.9.0


la source