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

75

Ich habe ein Ruby - Projekt, aber beim Laufen bundle updateund bundle installes gibt einen Fehler zurück:

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
theone1one
quelle
2
Bitte verwenden Sie keine Bilder oder externen Speicher für wesentliche Teile Ihrer Frage. Links verrotten und brechen. An diesem Punkt wird die Frage für zukünftige Menschen, die nach ähnlichen Lösungen suchen, keinen Sinn ergeben. Kopieren Sie stattdessen die wichtigsten Teile des Fehlers und Ihre Gemfile und fügen Sie sie in den Text der Frage ein.
der Blechmann

Antworten:

25

Wenn Sie ausführen, werden ruby -vSie feststellen, dass Sie Ruby 1.9.3 installiert haben, aber die erste Zeile in Ihrer Gemfile gibt 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'
Jeremy Green
quelle
ur Gemfile angegeben 2.1.0 ~ / projects / site (newtemplate) $ ruby ​​-v ruby ​​2.1.0p0 (2013-12-25 revision 44422) [i686-linux] ~ / projects / site (newtemplate) $ rails -v Ihr Ruby Version ist 1.9.3, aber Ihr Gemfile hat 2.1.0 ~ / projects / site (newtemplate) $ Rails angegeben. s Ihre Ruby-Version ist 1.9.3, aber Ihr Gemfile hat 2.1.0 ~ / projects / site (newtemplate) $ bundle exec angegeben Rails s Ihre Ruby-Version ist 1.9.3, aber Ihre Gemfile hat 2.1.0 angegeben. Wie löse ich das?
prasad.surase
32
Ich benutze rvm und ruby -vzeige, dass meine Ruby-Version 2.2.0 ist, aber die Fehlermeldung besagt, dass die Ruby-Version 2.0.0 ist
Towry
@ Mistertim Antwort unten behoben dieses Problem für mich$ gem install bundler
Diego Diaz de Berenguer
166

Ich habe dies bemerkt, als ich versucht habe, bundle installein neues RVM-Gemset zu verwenden, das noch keinen Bundler enthielt (da es auf die System-Bundler-Installation zurückgegriffen hat, die auf den System-Ruby verwies).

Laufen gem install bundlerfür mich repariert.

Mistertim
quelle
3
Danke @mistertim. Funktionierte perfekt für mich, als ich ruby -vdie richtige Version gab und das Bundle sie nicht erkannte.
Kenneth
Vielen Dank! Ich kann nicht herausfinden, was los war!
Okysabeni
38
Erinnern Sie sich an "rbenv rehash" nach "gem install bundler"
AndrewW
1
du hast meinen Tag gerettet. Vielen Dank.
Daniele Vrut
2
Wahrscheinlich offensichtlich, aber nur um hinzuzufügen, dass Sie bundlenach der Installation des Bundler-Edelsteins tatsächlich ausgeführt werden müssen . (Andernfalls kann der Fehler aufgrund zuvor erstellter Binärdateien immer noch auftreten, was die Leute irreführen könnte, zu
glauben
41

Nichts davon hat bei mir funktioniert, aber ich habe es endlich herausgefunden:

spring stop

Ich hatte ein Rails 4-Projekt, das Spring verwendet, um eine Rails-Umgebung aus Gründen der Geschwindigkeit 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) durchgeführt. Meine Theorie ist, dass Spring auf 2.1.1 weiter lief und so diesen Fehler verursachte.

Henrik N.
quelle
Dies funktionierte für mich, nachdem ich Spree installiert und dann meine Ruby-Version aktualisiert hatte. Vielen Dank.
Stahl
Vielen Dank! Dieser war auch mein Problem, denke ich.
RonLugge
29

Heroku Toolbelt kann dies verursachen, wenn Sie den herokuBefehl verwenden oder genauer gesagt bundle exec heroku, was Sie niemals tun sollten. Wenn Sie Ihr Problem beheben können, indem Sie es bundle execvor Ihren herokuAnrufen entfernen , versuchen Sie es zuerst. Wenn nicht, befolgen Sie die nachstehenden Anweisungen.


Update 25. Februar 2017:
Heroku Toolbelt wurde in Heroku CLI umbenannt . Unter diesen Links finden Sie aktualisierte Anweisungen zur Installation / Deinstallation:
https://devcenter.heroku.com/articles/heroku-cli
https://github.com/heroku/cli

Der Originalbeitrag wird unten unbearbeitet bereitgestellt (für Legacy-Anweisungen):


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

Oben /usr/bin/heroku steht wahrscheinlich so etwas wie#!/usr/local/heroku/ruby/bin/ruby

Versuche zu rennen /usr/local/heroku/ruby/bin/ruby -v und prüfen 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 die am Ende angegebene 1.9.3.

--- NICHT Verwenden Sie diese Seite und das mitgelieferte Installationsprogramm , um die Heroku-CLI unter OSX zu installieren:

https://toolbelt.heroku.com/

Weil die dort aufgeführten technischen Details wichtig sind:

Der Heroku-Befehlszeilenclient wird in / usr / local / heroku installiert und / usr / local / heroku / bin wird Ihrem PATH 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 Version 1.9.3, selbst 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 der Meinung sind, dass es eines geben sollte: https://github.com/heroku/toolbelt/issues/8

Manuelle Deinstallation (Umzug in den Papierkorb, um ein Backup zu erstellen, falls etwas fehlschlägt):

mv ~/.heroku ~/.Trash
sudo mv /usr/local/heroku ~/.Trash
sudo mv /usr/bin/heroku ~/.Trash

Installieren Sie stattdessen den Heroku-Werkzeuggürtel mit Homebrew

Weil es die aktuelle RVM-Version korrekt mit dem Heroku-Toolbelt verknüpft. Lauf:

brew install heroku-toolbelt

Der Heroku-Werkzeuggürtel wird dann nur an dieser Stelle installiert:

/usr/local/Cellar/heroku-toolbelt/3.21.4

(Sie können es auch leicht entfernen, brew uninstall heroku-toolbeltwenn Sie möchten.)

Testen der Installation:

› rvm current
ruby-2.0.0-head@bloggery

› 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 dort am Ende dieses letzten Befehls jetzt 2.0.0 steht. Sie führen den Heroku-Client jetzt mit der rvm currentin RVM angegebenen Ruby-Version aus.

Magne
quelle
Super Antwort, danke. Beachten Sie, dass dies mit rbenv genauso funktioniert.
Dan Kohn
1
Das ist fantastisch, ich hatte genau dieses Problem. Ein Kommentar - Ihr Problemlink funktioniert nicht mehr.
Mattnedrich
Danke @mattnedrich, ich habe den Beitrag mit einigen neuen Links oben zum neuen Standort auf github aktualisiert: github.com/heroku/cli
Magne
Einzige Sache, die bei mir funktioniert hat! War in der Tat der alte Heroku-Werkzeuggürtel, der das Problem verursachte.
Rimkashox
11

Wenn Sie tippen rvm listund eine 2.0-Version von Ruby als Ihre aktuelle Version anzeigt und Sie immer noch diesen Fehler erhalten, wurde rvm use (ruby version)dieses Problem durch Eingabe behoben.

Störung
quelle
Diese Lösung funktioniert hervorragend für mich, weil ich mehrere Projekte arbeite, die unterschiedliche Ruby-Versionen verwenden.
Jais Anasrulloh Ja'fari
5

"Ich hatte das gleiche Problem mit Rbenv, das über Brew installiert wurde.

Ich konnte es nicht herausfinden, versuchte alles oben Genannte und wechselte schließlich zu rvm, was es löste. "

Als Antwort auf diesen Beitrag müssen Sie sicherstellen, dass Sie rbenv rehashnach der Installation einer Ruby-Version ausgeführt werden. Das schien für mich zu funktionieren, als ich auf das gleiche Problem stieß.

Daniel Kang
quelle
Laufen rbenv rehashhat das Problem auch für mich gelöst.
MoskitoHero
Woah, ich hatte nicht erwartet, so weit zu scrollen, um die Antwort zu erhalten, nach der ich gesucht habe :) Ich wollte nicht zu rvm wechseln.
GabLeRoux
5

Wenn Sie einen Ruby-Versionsmanager wie RVM oder rbenv verwenden, erstellen Sie im obersten Verzeichnis Ihres Projekts eine Datei .ruby-versionmit dem Namen, die die in Ihrer Gemfile angegebene Version enthält, z.

2.0.0

Das ist anscheinend {rbenv,rvm}der Scheideweg, die Version jetzt zu spezifizieren.

Tonbrücken
quelle
3

Ruby-Switch wurde von Ubuntu 14.04 und höher entfernt . Ich werde diese Antwort der Nachwelt überlassen, aber Sie brauchen wahrscheinlich eine andere Lösung. Lesen Sie auch " Ruby 2.0 ohne Ruby-Schalter installieren? ".


Wenn Sie eine neue Version von Ruby installiert haben, aber immer noch Fehler bezüglich der Gemfile-Nichtübereinstimmung erhalten, müssen Sie wahrscheinlich ruby-switchdie neue Version von Ruby als Standard festlegen:

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
Chris Hanson
quelle
2
Nett. sudo apt-get install ruby-switchwird vermisst.
Gestreift
3

In meinem Fall habe ich rvm get headdie RVM-Version aktualisiert und es hat funktioniert.

PallavSharma
quelle
2

Ich hatte dieses Problem nach dem Upgrade von Ruby-Versionen über rbenv. Ich habe es versuchtspring stop Befehl jemand oben erwähnt hat.

Als ich lief, bekam ich eine andere Nachricht, die darauf hinwies, dass ich renne gem pristine --all

Warnung: Wenn Sie gem makellos ausführen - alles, um Ihre installierten gemspecs zu regenerieren, wird die Startleistung von Spring verbessert.

Also habe ich diesen Befehl ausgeführt, und dann haben sich die Dinge wieder normalisiert.

asgeo1
quelle
2

Der Hauptgrund für dieses Problem ist, dass Ihre Maschine und Ihr Gemfile eine andere Ruby-Version verwenden

Es gibt also mehrere Probleme und Lösungen für dieses Problem. Sie können die folgenden Lösungen einzeln ausprobieren

1- Stellen Sie sicher, dass Ihr Computer dieselbe Version Ihrer gemfile installiert und verwendet, wenn Ihr Computer nicht dieselbe Version verwendet, und versuchen Sie, diese Version mit rvm zu installieren

$ rvm install ruby_version_you_want

Stellen Sie mit diesem Befehl sicher, dass die installierte Version erfolgreich ist

$ rvm list

Wenn die neue Version nicht als Standard festgelegt ist, können Sie sie mit diesem Befehl festlegen

$ rvm --default use ruby_version_you_want 

Sie können die aktuelle Ruby-Version überprüfen

 $ rvm current 
 $ ruby -v 

2- Wenn Sie das gleiche Problem haben, überprüfen Sie Ihren Bundler

  $ gem install bundler
    or
  $ gem update bundler 

3- In einigen Fällen wird die alte Version immer noch verwendet, sodass Sie sie stoppen müssen

$ ./bin/spring stop

4- Ein weiterer Fall, den Sie eingeben können

$ gem pristine --all 

und versuchen Sie erneut, das Bundle zu installieren

5- In einigen Fällen müssen Sie nach der Installation der aktualisierten Ruby-Version nur Ihr Terminal neu starten.

6- eine andere Lösung, aber ich habe es nicht empfohlen, das oberste Verzeichnis Ihres Projekts, erstellen Sie eine Datei mit dem Namen .ruby-version, die Ihre aktive laufende Ruby-Version enthält

7- Wenn Sie immer noch dieses Problem haben, versuchen Sie, Ruby zu entfernen und nur die aktualisierte Version zu installieren

 $ aptitude purge ruby 
Mohamed Naser
quelle
1

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

Shaun McDonald
quelle
0

Ich hatte das gleiche Problem mit rbenv, das über Homebrew installiert wurde.

Ich konnte es nicht herausfinden, versuchte alles oben Genannte und wechselte schließlich zu RVM, was es löste.

FreePender
quelle
0

Ich hatte genau dieses Problem - nur wenige Sekunden nach dem Betrachten des Mac OSX-Terminals wurde bestätigt, dass Ruby 2.0.0 erfolgreich installiert wurde.

Mac OSX wird mit einer veralteten Version von Ruby ausgeliefert, die bereits installiert und als Standard-Ruby festgelegt ist. Um das Problem zu beheben, können Sie "JewelryBox" installieren, eine charmante und hübsche App, die Ihnen eine grafische Benutzeroberfläche zum Anzeigen und Verwalten mehrerer Rubine bietet (hilfreich, wenn Sie mehrere Entwicklungsumgebungen auf einem Mac haben). Sie können es verwenden, um die Auswahl von Mac OSXs Standard-Ruby aufzuheben und Ihren neu installierten Ruby auszuwählen.

Deborah
quelle
0

Ich habe festgestellt, dass mein Rake- oder Rails-Skript im bin-Verzeichnis eine andere Version von Ruby verwendet. Ich habe zwei Rake-Skripte von zwei Servern (Produktion und Entwicklung) verglichen und festgestellt, dass sie unterschiedliche Ruby-Versionen verwenden. Also musste ich entsprechend aktualisieren.

1c1
< #!/usr/bin/env ruby
---
> #!/usr/bin/env ruby1.9.1
David Okwii
quelle
0

Ist bei der Verwendung des Passagierjuwels auf diesen Fehler gestoßen. Da ich dieses Juwel mit Sudo-Zugriff installiert habe, wurde eine Standardversion von Ruby verwendet. Ich glaube, der Grund könnte sein, dass Ruby ohne Sudo-Zugriff auf meinem System installiert wurde und der Passagier die tatsächlich zu verwendende Ruby-Version nicht kannte.

Die Installation des Gems und seines Apache-Moduls ohne Sudo-Zugriff hat das Problem jedoch behoben.

VPaul
quelle
0

Wenn Sie dieses Problem finden und keine der typischen Lösungen dieses Problem für Sie beheben möchten, überprüfen Sie, ob Sie mehr als einen Ruby-Versionsmanager haben. Es gibt mehrere Versionsmanager, und einige Software- oder Installationsskripte verwenden unterschiedliche. Ich kenne rbenv, rvm, asdf, und zumindest eine andere , dass ich nicht den Namen erinnere an. Ich hatte asdfmit einem anderen Tool installiert, ohne zu bemerken, dass es passiert ist, und es verursachte die angegebene Versionsinkongruenz.

Um dies zu überprüfen, führen Sie which rubyden Pfad aus und schauen Sie ihn sich genau an. Wenn es nicht der tatsächliche Versionsmanager ist, den Sie erwarten, leiden Sie unter diesem Problem. Die einfachste Lösung besteht darin, die gewünschte zu verwenden und die andere zu entfernen. Wenn Sie aus irgendeinem Grund beide beibehalten müssen, müssen Sie wahrscheinlich die Reihenfolge der Pfade in der RC-Datei Ihrer Shell ändern.

agbodike
quelle
-1

Ich teile diesen Leckerbissen in einem Moment großer Erleichterung, nachdem ich endlich ein Problem gelöst habe, das mich seit Monaten verfolgt.

rails new myapp
//Your Ruby version is 2.1.5, but your Gemfile specified 2.0.0

Ich habe buchstäblich jede Lösung für dieses Problem ausprobiert, die ich im Internet finden konnte, und am Ende des Tages stellte sich heraus, dass mein Problem dadurch verursacht wurde, dass ich versehentlich eine Rails-App in Users / MyName installiert hatte und diese Gemfile las.

Bevor Sie die verschiedenen anderen hier angebotenen Lösungen ausprobieren, sollten Sie sich eine Sekunde Zeit nehmen, um zu bestätigen, dass Sie etwas Ähnliches nicht getan haben.

Alex Colket
quelle
-1

Ich verwende die Windows-Entwicklungsumgebung.

Ich habe gerade C:\Ruby22-x64\binmeine Pfadvariable vor der heroku\binEingabe hinzugefügt .

mdwpilot
quelle