Wie kann ich die Installation bündeln, wenn für Ihr Gemfile eine ältere Version des Bundlers erforderlich ist?

75

Ich bin in einem älteren Rails-Projekt, das eine Gemfile hat. Ich habe versucht, einen Edelstein zur Gemfile hinzuzufügen, habe bundle installaber eine Fehlermeldung erhalten:

Bundler could not find compatible versions for gem "bundler":
  In Gemfile:
    rails (= 3.0.0) ruby depends on
      bundler (~> 1.0.0) ruby

  Current Bundler version:
    bundler (1.1.5)

This Gemfile requires a different version of Bundler.

Die verwendete Version von Rails erfordert den Bundler ~> 1.0.0, aber ich habe 1.1.5 installiert und verwende es für meine anderen Projekte. Normalerweise würde ich verwenden, bundle exec ...aber da dies ein Bundler ist, über den wir sprechen, ist es etwas komplizierter. Wie kann ich meinem Gemfile einen Edelstein hinzufügen und ausführen, bundle installwährend ich die erforderliche Bundler- Version verwende?

Andrew
quelle
Ich denke, zuerst 1.1.5 Bundler deinstallieren. Dann installieren Sie 1.0.0. Dies wird behoben. Vielleicht gibt es eine bessere Lösung?
Halfelf

Antworten:

142

Zuerst müssen Sie die entsprechende Version des Bundlers installieren:

% gem install bundler -v '~> 1.0.0'
Successfully installed bundler-1.0.22

Dann zwingen Sie Rubygems, die gewünschte Version zu verwenden ( siehe diesen Beitrag ):

% bundle _1.0.22_ install
alexsanford1
quelle
Warum zum Teufel ist das nicht in den Bundler-Dokumenten?!? Vielen Dank, nachdem ich mehr Stunden verschwendet habe, als ich zugeben möchte, dass Ihre Antwort endlich erklärt hat, was ich brauchte.
MikeSchinkel
2
Um für eine genaue Version in diesen Tagen zu gehen, sollten Sie verwendengem install bundler -v '=1.16.0'
Nick Schwaderer
9
Funktioniert jetzt nicht. Es kann Rubygems nicht zwingen, die bundle _1.0.22_ installangegebene Version zu verwenden
Alec.Zhou
1

Die Fehlermeldung In Gemfile: bundler (~> 1.16)ist etwas ungenau, da die Anforderung der Versionsnummer von anderen Stellen stammen kann, z. B. von der .gemspecDatei, was bei mir der Fall war:

spec.add_development_dependency "bundler", "~> 1.16"

Das Entfernen der Versionsnummer aus der .gemspecDatei löste das Problem für mich:

spec.add_development_dependency "bundler"
Asbjørn Ulsberg
quelle
0

Ich hatte das gleiche Problem unter macOS Mojave. Ich habe die andere Version des Bundler Gem installiert und die aktuelle Version deinstalliert.

gem install bundler -i '2.0.1'

gem uninstall bundler

Dann habe ich die Möglichkeit, die zu deinstallierende Version auszuwählen und diejenige auszuwählen, die das Problem verursacht.

gsumk
quelle
Dies muss nicht unbedingt empfohlen werden. Ich würde zuerst die akzeptierte Antwort versuchen. Abhängig von den späteren Versionen haben Sie möglicherweise andere Edelsteine, und Sie können sie separat ausführen.
Michael Elliott