wake-up-neo.com

Wie Sie beheben "Ihre Ruby-Version ist 1.9.3, aber Ihre Gemfile hat 2.0.0 angegeben"

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
70
theone1one

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'
24
Jeremy Green

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.

164
mistertim

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.

38
Henrik N

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:


Wenn Sie den Heroku-Toolbelt von der offiziellen Website installiert haben:

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: 

https://toolbelt.heroku.com/

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.

Deinstallieren Sie den Heroku-Toolbelt

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

Installieren Sie den Heroku-Werkzeuggürtel stattdessen mit Homebrew

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.

29
Magne

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.

10
dysruption

"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ß.

5
Daniel Kang

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.

4
Clay Bridges

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
3
Chris Hanson

In meinem Fall habe ich rvm get head verwendet, um die RVM-Version zu aktualisieren.

3
PallavSharma

Ich fand heraus, dass die Neuinstallation von RVM den Trick bewirkte, als dieser Fehler auftrat, da jeder andere Vorschlag nicht funktionierte.

1
Shaun McDonald

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.

1
asgeo1

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.

0
agbodike

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.

0
Rishinder

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.

0
FreePender

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
0
David Okwii