Sie haben Rake 0.9.0 bereits aktiviert, für Ihr Gemfile ist jedoch Rake 0.8.7 erforderlich

124

Ich versuche, ein Rails-Projekt auszuführen

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

Wenn ich das tue: "Bundle installieren"

aber ich bekomme

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

Währenddessen

rake db:migrate
Mujah Maskey
quelle

Antworten:

245

Stellen Sie zunächst sicher, dass der Rechen in Ihrem Gemfile erwähnt wird. Wenn dies nicht der Fall ist, fügen Sie es hinzu und geben Sie die Version an, die Sie bereits aktiviert haben.

Anschließend müssen Sie Bundle anweisen, die für Ihre App verwendete Rake-Version zu aktualisieren:

bundle update rake

Es wird Ihre Gemfile.lockfür Sie aktualisieren .

danneu
quelle
2
Das hat bei mir nicht funktioniert. Wenn ich diesen Befehl ausführe, macht er genau das Gleiche wie 'Bundle-Installation' und zeigt, dass er dieselbe Rake-Version verwendet. Es wird nicht aktualisiert.
EE33
5
Ich musste gem 'rake', 'version #' zu meiner gemfile hinzufügen und 'bundle update rake' ausführen, damit meine gemfile.lock korrekt aktualisiert wurde. Zu Ihrer Information für alle, die diese Lösung nicht zum Laufen bringen konnten.
EE33
44

Wo Sie gerade Rake-Befehle wie verwenden

rake db:migrate

Verwenden Sie stattdessen Folgendes:

bundle exec rake db:migrate

Dies ist so lange der Fall, bis die neueste Version von Schienen und / oder Rechen gut zusammenarbeitet.

Floyd Price
quelle
3
Das bisschen über "die neueste Version von Schienen und / oder Rechen", das gut zusammenarbeitet, hat nur zu einem bestimmten, unbenannten Zeitpunkt und unter bestimmten Annahmen über den verwendeten Arbeitsablauf eine Bedeutung. Ich denke, diese Implikation lautet: "Sie verwenden eine Schiene mit blutenden Kanten, und der Rechen hat noch nicht aufgeholt." Dieser Fall kann jedoch entweder durch die Ansätze "bundle exec" oder "edit Gemfile" gelöst werden. Diese Ansätze lösen das Problem auch, wenn keine intrinsischen Kompatibilitätsprobleme vorliegen, sondern nur ein durcheinandergebrachter Workflowverlauf.
Jackr
24

Ich danke Dobry Den, Prost, Alter. aber wenig mehr musste ich tun. Hier ist Lösung (funktioniert für mich). Ich hatte hinzugefügt

gem 'rake','0.8.7'

auf Gemfile, das nicht da war, aber meine neue Version von Rails installiert automatisch Rake (0.9.0).

Nachdem ich rake0.9.0 von gem uninstall rake und danach gelöscht hatte bundle update rake, kann ich eine Datenbank erstellen und migrieren.

Mujah Maskey
quelle
7

Geben Sie die gewünschte Version in Ihrer Gemfile an.

gem 'rake', '0.9.0' 

dann

bundle update rake

Sie müssen Bundle Exec verwenden, um Ihre Rake-Task auszuführen

bundle exec rake db:migrate
Hacksignal
quelle
Scheint die spätere Version nicht zu "deaktivieren". Das vollständige Entfernen von Rake und das erneute Installieren funktionieren jedoch.
JosephK
6

Oh schau, es ist die Zukunft. Für mich war es eine Beschwerde, dass ich Rake 10.x installiert hatte, als es 0.9.5 wollte. Ich bin mir nicht ganz sicher, ob ich mit Ruby nicht vertraut genug bin, um wirklich zu untersuchen, was mit den letzten Versionsnummern passiert ist, aber ich habe Folgendes getan:

gem uninstall rake
gem install rake -v 0.9.5

um das System zu zwingen, die Version von Rake zu installieren, die die App wollte (für mich war es Octopress).

Subdigit
quelle
2
Die Zukunft heißt, und sie will sich deine Hammerhose ausleihen.
Keith Layne
Hallo, es ist wieder die Zukunft. Ich höre, dass Hammerhosen endlich ein Comeback feiern.
Subdigit
5

Ich hatte dieses Problem (mit einem anderen Edelstein, der kein Rechen war) und konnte es beheben

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

bundle install
bundle update

Beachten Sie, dass das Schlüsselwort 'sudo' nicht verwendet wurde (dh sudo bundle install), da dies Ihren Edelstein möglicherweise in Verzeichnisse einfügt, in denen Ihre Rails-App möglicherweise nicht sucht.

Gletscher
quelle
3

Wenn ich verstehe, was Sie nicht fragen, müssen Sie Ihre GemfileDatei öffnen und die Zeile ändern ...

gem 'rake', '0.8.7'

...zu...

gem 'rake', '0.9.0'
Olivier L.
quelle
Was ist, wenn ich 0.8.7 anstelle von 0.9 verwenden möchte?
Kir
6
Das Rake-Gem ist in Ihrer Gemfile standardmäßig nicht angegeben, da es sich um eine Rails-Abhängigkeit handelt. Wenn Sie den Rake-Edelstein auf 0.9.0 aktualisiert haben, haben Sie immer noch den 0.8.7-Edelstein auf Ihrem System (überprüfen Sie mit gem list). Ich bin mir ziemlich sicher, dass, wenn gem 'rake', '0.8.7'noch in Ihrem angegeben Gemfile.lock, der Edelstein 0.8.7 problemlos verwendet wird. Wenn nicht, versuchen Sie es bundlenach dem Hinzufügen gem 'rake', '~> 0.8.7'zu Ihrer Gemfile (nicht .lock) und prüfen Sie, ob darin etwas steht.
Danneu
Ich stimme @Dobry Den zu.
Olivier L.
Edelstein 'Rechen' ist nicht definiert. Es wird standardmäßig eins verwendet, wenn ich mehrere Gem Rake (0.8.7 und 0.9.0) habe. Können wir den alten Standard festlegen?
Mujah Maskey
3

Fügen Sie dies Ihrem Gemfile hinzu

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

Und dann deinstallieren Sie rake-0.9.0


quelle