Ich habe ein Ruby-Projekt erstellt, aber beim Ausführen von bundle update
und bundle install
wird ein Fehler ausgegeben:
Your Ruby version is 1.9.3, but your Gemfile specified 2.0.0
Ein Bild davon ist: http://i.imgur.com/dZMhI11.png?1
Mein Gemfile ist:
Ruby '2.0.0'
#Ruby-gemset=railstutorial_Rails_4_0
gem 'Rails', '4.0.0'
group :development do
gem 'sqlite3', '1.3.8'
end
gem 'sass-Rails', '4.0.0'
gem 'uglifier', '2.1.1'
gem 'coffee-Rails', '4.0.0'
gem 'jquery-Rails', '3.0.4'
gem 'turbolinks', '1.1.1'
gem 'jbuilder', '1.0.2'
group :doc do
gem 'sdoc', '0.3.20', require: false
end
Wenn Sie Ruby -v
ausführen, werden Sie feststellen, dass Sie Ruby 1.9.3 installiert haben. Die erste Zeile in Ihrer Gemfile gibt jedoch an, dass Sie Ruby 2.0.0 verwenden möchten.
Sie sollten entweder Ruby 2.0.0 installieren oder die erste Zeile in Ihrer Gemfile ändern, um Ruby 1.9.3 anzugeben.
probe von Gemfile:
source 'https://rubygems.org'
Ruby "1.9.3"
gem 'pry'
gem 'pry-nav'
# Use with command-line debugging, but not RubyMine
#gem 'debugger'
gem 'bundler'
Ich habe dies bemerkt, als ich versuchte, mit einem neuen RVM-Gemset, das noch keinen Bundler enthielt, bundle install
zu __codieren (da es auf die System-Bundler-Installation zurückgegriffen hat, die auf das System Ruby verwies).
Läuft gem install bundler
für mich behoben.
Keines davon funktionierte für mich, aber ich habe es endlich herausgefunden:
spring stop
Ich hatte ein Rails-4-Projekt, das etwas namens Spring verwendet, um eine Rails-Umgebung im Hintergrund laufen zu lassen.
Ich hatte Spring mit Ruby 2.1.1 gestartet, dann aber ein Upgrade auf 2.1.2 (in Gemfile und .Ruby-Version). Meine Theorie ist, dass Spring auf 2.1.1 weiterlief und diesen Fehler verursachte.
Heroku Toolbelt verursacht dies möglicherweise, wenn Sie den Befehl heroku
verwenden, oder genauer bundle exec heroku
, was Sie niemals tun sollten. Wenn Sie das Problem beheben können, indem Sie bundle exec
vor Ihren heroku
-Aufrufen entfernen, versuchen Sie es zuerst. Wenn nicht, dann folgen Sie den folgenden Anweisungen.
Update vom 25. Februar 2017:
Heroku Toolbelt wurde in Heroku CLI umbenannt. Diese Links enthalten aktualisierte Anweisungen zur Installation/Deinstallation:
https://devcenter.heroku.com/articles/heroku-cli
https://github.com/heroku/cli
Der ursprüngliche Beitrag wird im Folgenden (für alte Anweisungen) unbearbeitet zur Verfügung gestellt:
Oben in /usr/bin/heroku
steht wahrscheinlich etwas wie #!/usr/local/heroku/Ruby/bin/Ruby
Führen Sie /usr/local/heroku/Ruby/bin/Ruby -v
aus und prüfen Sie, ob Ruby 1.9.3 ausgegeben wird.
https://github.com/heroku/toolbelt/issues/53
› heroku --version
heroku-toolbelt/3.26.1 (x86_64-darwin10.8.0) Ruby/1.9.3
Beachten Sie dort die am Ende angegebene 1.9.3.
--- Verwenden Sie NOT diese Seite und das Installationspaket, um die Heroku-CLI unter OSX zu installieren:
Weil die dort aufgeführten technischen Details wichtig sind:
Der Heroku-Befehlszeilen-Client wird in/usr/local/heroku installiert und/usr/local/heroku/bin wird Ihrem PFAD hinzugefügt.
Dies ist nachteilig, da RVM dann Folgendes tut:
› rvm current
Ruby-2.1.1
› heroku --version
heroku-toolbelt/3.26.1 (x86_64-darwin10.8.0) Ruby/1.9.3
Es gibt diese irritierende 1.9.3-Version, auch wenn ich eine andere Ruby-Version mit RVM angegeben habe.
Es gibt kein offizielles Deinstallationsprogramm für OSX. Schreiben Sie hier +1, wenn Sie glauben, dass es eines geben sollte: https://github.com/heroku/toolbelt/issues/8
Manuelle Deinstallation (in den Papierkorb verschieben, um ein Backup zu halten, falls etwas fehlschlägt):
mv ~/.heroku ~/.Trash
Sudo mv /usr/local/heroku ~/.Trash
Sudo mv /usr/bin/heroku ~/.Trash
Weil es die aktuelle RVM-Version korrekt mit dem Heroku-Toolbelt verknüpft. Lauf:
brew install heroku-toolbelt
Heroku Toolbelt wird dann nur an diesem Ort installiert:
/usr/local/Cellar/heroku-toolbelt/3.21.4
(Sie können es auch problemlos mit brew uninstall heroku-toolbelt
entfernen, wenn Sie möchten.)
Testen der Installation:
› rvm current
[email protected]
› rvm list
rvm rubies
=* Ruby-2.0.0-head [ x86_64 ]
Ruby-2.1-head [ x86_64 ]
Ruby-2.1.1 [ x86_64 ]
# => - current
# =* - current && default
# * - default
› rvm use Ruby-2.1.1
Using /Users/Username/.rvm/gems/Ruby-2.1.1
› rvm current
Ruby-2.1.1
› heroku --version
heroku-toolbelt/3.26.1 (x86_64-darwin12.0) Ruby/2.1.1
You have no installed plugins.
› rvm use Ruby-2.0.0-head
Using /Users/Username/.rvm/gems/Ruby-2.0.0-head
› heroku --version
heroku-toolbelt/3.26.1 (x86_64-darwin13.4.0) Ruby/2.0.0
You have no installed plugins.
Beachten Sie, dass jetzt am Ende dieses letzten Befehls 2.0.0 steht. Sie führen jetzt den Heroku-Client mit der in RVM angegebenen rvm current
Ruby-Version aus.
Wenn Sie rvm list
eingeben und in Ihrer aktuellen Version eine 2.0-Version von Ruby angezeigt wird und diese Fehlermeldung weiterhin angezeigt wird, wurde der Fehler durch die Eingabe von rvm use (Ruby version)
behoben.
"Ich hatte das gleiche Problem mit rbenv, das über Brew installiert wurde.
Ich konnte es nicht verstehen, probierte alle oben genannten Dinge aus und wechselte schließlich zu rvm, wodurch es gelöst wurde. "
Als Antwort auf diesen Beitrag müssen Sie sicherstellen, dass Sie rbenv rehash
ausführen, nachdem Sie eine Ruby-Version installiert haben. Das schien für mich zu funktionieren, als ich auf dasselbe Problem stieß.
Wenn Sie einen Ruby Versionsmanager wie RVM oder rbenv verwenden, erstellen Sie im obersten Verzeichnis Ihres Projekts eine Datei mit dem Namen .Ruby-version
, Die die angegebene Version enthält in deinem Gemfile, zB:
2.0.0
Das ist anscheinend der Kreuzweg {rbenv,rvm}
, Um die Version jetzt zu spezifizieren.
Ruby-Schalter wurde von Ubuntu 14.04 und höher entfernt . Ich werde diese Antwort der Nachwelt überlassen, aber Sie benötigen wahrscheinlich eine andere Lösung. Check out " Installiere Ruby 2.0 auch ohne Ruby-Switch? ".
Wenn Sie eine neue Version von Ruby installiert haben, aber immer noch Fehler bezüglich der Nichtübereinstimmung von Gemfile erhalten, müssen Sie wahrscheinlich Ruby-switch
verwenden, um die neue Version von Ruby als Standard festzulegen:
Sudo apt-get update && Sudo apt-get upgrade
Sudo apt-get install Ruby2.1 Ruby2.1-dev
Sudo Ruby-switch --set Ruby2.1
Sudo gem install bundler
In meinem Fall habe ich rvm get head
verwendet, um die RVM-Version zu aktualisieren.
Ich fand heraus, dass die Neuinstallation von RVM den Trick bewirkte, als dieser Fehler auftrat, da jeder andere Vorschlag nicht funktionierte.
Dieses Problem hatte ich nach dem Upgrade von Ruby-Versionen über Rbenv. Ich habe den spring stop
Befehl ausprobiert, den jemand oben erwähnt hat.
Als ich das lief, bekam ich eine weitere Nachricht mit dem Hinweis, dass ich gem pristine --all
Warnung: Läuft makellos - Alles, um Ihr installiertes .__ zu regenerieren. gemspecs verbessert die Startperformance von Spring.
Also habe ich diesen Befehl ausgeführt und dann haben sich die Dinge wieder normalisiert.
Vorschläge für alle, die dieses Problem finden, und keine der typischen Lösungen behebt dieses Problem für Sie. Prüfen Sie, ob Sie mehr als einen Ruby-Versionsmanager haben. Es gibt mehrere Versionsmanager, und einige Software- oder Installationsskripts verwenden andere. Ich kenne rbenv
, rvm
, asdf
und mindestens eine weitere, an die ich mich nicht erinnere. Ich hatte asdf
von einem anderen Tool installiert, ohne zu wissen, dass es passiert ist, und dies führte zu einem Konflikt bei der angegebenen Version.
Um dies zu überprüfen, führen Sie which Ruby
aus und prüfen Sie den Pfad sorgfältig. Wenn es nicht der tatsächliche Versionsmanager ist, den Sie erwarten, leiden Sie an diesem Problem. Die einfachste Lösung besteht darin, den gewünschten zu verwenden und den anderen loszuwerden. Wenn Sie aus irgendeinem Grund beides beibehalten müssen, müssen Sie wahrscheinlich die Reihenfolge der Pfade in der .rc-Datei Ihrer Shell ändern.
Dieser Fehler ist bei der Verwendung des Passagieredelsteins aufgetreten. Da ich dieses Juwel mit Sudo-Zugriff installiert habe, brauchte es eine Standardversion von Ruby. Ich glaube, der Grund könnte darin liegen, dass Ruby ohne Sudo-Zugriff auf meinem System installiert wurde und der Passagier die aktuelle Version von Ruby nicht wusste.
Durch die Installation des Gem und des Apache-Moduls ohne Sudo-Zugriff wurde das Problem behoben.
Ich hatte das gleiche Problem mit rbenv, das über Homebrew installiert wurde.
Ich konnte es nicht verstehen, probierte alles aus, also wechselte ich zu RVM, was das Problem löste.
Ich entdeckte, dass mein Rake- oder Rails-Skript im bin-Verzeichnis eine andere Version von Ruby verwendete. Ich verglich zwei Rake-Skripte von zwei Servern (Produktion und Entwicklung) und es zeigte mir, dass sie unterschiedliche Ruby-Versionen verwendeten. Also musste ich entsprechend updaten.
1c1
< #!/usr/bin/env Ruby
---
> #!/usr/bin/env Ruby1.9.1