Beim Ausführen rake
erhalte ich folgende Fehlermeldung:
Sie haben Rake 0.9.2 bereits aktiviert, für Ihr Gemfile ist jedoch Rake 0.8.7 erforderlich. Erwägen Sie die Verwendung von Bundle Exec.
Verwenden bundle exec rake
statt nur rake
zu funktionieren scheint, aber ist es der beste Weg, dies zu beheben?
Antworten:
Verwenden
bundle exec
ist der richtige Weg, um dies zu tun.Grundsätzlich passiert, dass Sie Rake auf 0.9.2 aktualisiert haben, was jetzt mit der in Ihrer Gemfile angegebenen Version in Konflikt steht. Zuvor
rake
stimmte die neueste Version von Ihnen mit der Version in Ihrem Gemfile überein, sodass Sie bei einfacher Verwendung keine Warnung erhieltenrake
.Yehuda Katz (einer der ursprünglichen Bundler-Entwickler) erklärt alles in diesem Blog-Beitrag .
Um zu vermeiden
bundle exec ...
, dass Sie ständig tippen, können Sie in Ihrer Shell einen Alias oder eine Funktion für Befehle einrichten, die Sie üblicherweise mit Bundler verwenden. Zum Beispiel verwende ich Folgendes für Rake:quelle
Wenn Sie einen Grund haben, die aktuelle Version von Rake beizubehalten (oder was auch immer ein anderer Edelstein das Problem verursacht), ist Matt korrekt. Der beste Weg, dies zu tun, ist das Ausführen
bundle exec
. Dies verwendet die in Ihrer Gem-Datei angegebene Version, anstatt die neueste Version des von Ihnen installierten Gems zu verwenden. (nathan.f77 hat unten eine gute Lösung, wenn Sie nichtbundle exec
jedes Mal tippen möchten, wenn Sie Rake ausführen.)Andernfalls können Sie ausführen, wenn es keinen Grund gibt, Rake nicht zu aktualisieren
Dadurch wird Ihr Gemfile.lock aktualisiert, um die neueste Version von Rake zu verwenden, anstatt
bundle exec
jedes Mal ausgeführt werden zu müssen.Hinweis: Wenn Sie nur
bundle update
dies ausführen, werden alle Edelsteine in Ihrer Gem-Datei aktualisiert, anstatt nur zu harken. Dies ist wahrscheinlich nicht das, was Sie möchten. Wenn in Ihrer Anwendung etwas kaputt geht, wissen Sie nicht, welches Gem-Update dies verursacht hat.Die weniger empfohlene Methode, die ältere Version beizubehalten, ohne sie verwenden zu müssen,
bundle exec
besteht darin, die neueren Versionen von Rake zu deinstallieren.Dies funktioniert, aber wenn Sie mit mehreren Apps arbeiten, die unterschiedliche Versionen von Rake verwenden, kann dies schmerzhaft sein, da Sie ständig verschiedene Versionen installieren und deinstallieren müssen.
quelle
gem install rake
. Danngem uninstall rake
und wählte 0.9.2.bundle update
aktualisiert auch alle Edelsteine ohne die angegebenen Versionen auf die neueste verfügbare Version. Das ist vielleicht nicht das, was Sie wollen.bundle update rake
wäre mehr Precies.public_suffix
stattrake
. Laufenbundle update public_suffix
hat leider keine Auswirkung.Versuchen
bundle clean --force
Es entfernt jedes Systemjuwel, das nicht in diesem Bundle enthalten ist
quelle
Das letzte Mal, als mir das passiert ist, hatte ich alle meine Edelsteine aktualisiert. Ich habe eine
gem uninstall rake
und es listete Versionsoptionen auf. Ich habe die neuere ausgewählt und musste sie dann nichtbundle exec
mehr verwenden.Wenn Sie
bundle exec
es verwenden, wird grundsätzlich die von Ihrem Bundle installierte Gem-Version verwendet, also was in der Gem-Datei enthalten ist. Ohne verwendetbundle exec
es die Version, die Ihr System standardmäßig verwendet.quelle
Oh! Der Katz-Artikel ist ausgezeichnet!
Diese Lösung gefällt mir am besten:
damit Sie jetzt tippen können
Für jemanden wie mich, der sowohl 2.3- als auch 3.0.9-Apps entwickelt, fühle ich mich dadurch viel besser.
quelle
bundle exec
ist richtig, aber Sie möchten es nicht jedes Mal eingeben.Sie können dies in Ihre .bashrc einfügen:
quelle
Eine andere Möglichkeit, es nicht jedes Mal einzugeben, ist beispielsweise ein Makefile
quelle