Ich habe ein Ruby - Projekt, aber beim Laufen bundle update
und bundle install
es 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
ruby-on-rails
ruby
theone1one
quelle
quelle
Antworten:
Wenn Sie ausführen, werden
ruby -v
Sie 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'
quelle
ruby -v
zeige, dass meine Ruby-Version 2.2.0 ist, aber die Fehlermeldung besagt, dass die Ruby-Version 2.0.0 ist$ gem install bundler
Ich habe dies bemerkt, als ich versucht habe,
bundle install
ein 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 bundler
für mich repariert.quelle
ruby -v
die richtige Version gab und das Bundle sie nicht erkannte.bundle
nach 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, zuNichts davon hat bei mir funktioniert, aber ich habe es endlich herausgefunden:
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.
quelle
Heroku Toolbelt kann dies verursachen, wenn Sie den
heroku
Befehl verwenden oder genauer gesagtbundle exec heroku
, was Sie niemals tun sollten. Wenn Sie Ihr Problem beheben können, indem Sie esbundle exec
vor Ihrenheroku
Anrufen 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
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:
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-toolbelt
wenn 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 current
in RVM angegebenen Ruby-Version aus.quelle
Wenn Sie tippen
rvm list
und eine 2.0-Version von Ruby als Ihre aktuelle Version anzeigt und Sie immer noch diesen Fehler erhalten, wurdervm use (ruby version)
dieses Problem durch Eingabe behoben.quelle
"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 rehash
nach der Installation einer Ruby-Version ausgeführt werden. Das schien für mich zu funktionieren, als ich auf das gleiche Problem stieß.quelle
rbenv rehash
hat das Problem auch für mich gelöst.Wenn Sie einen Ruby-Versionsmanager wie RVM oder rbenv verwenden, erstellen Sie im obersten Verzeichnis Ihres Projekts eine Datei
.ruby-version
mit 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.quelle
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-switch
die 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
quelle
sudo apt-get install ruby-switch
wird vermisst.In meinem Fall habe ich
rvm get head
die RVM-Version aktualisiert und es hat funktioniert.quelle
Ich hatte dieses Problem nach dem Upgrade von Ruby-Versionen über rbenv. Ich habe es versucht
spring stop
Befehl jemand oben erwähnt hat.Als ich lief, bekam ich eine andere Nachricht, die darauf hinwies, dass ich renne
gem pristine --all
Also habe ich diesen Befehl ausgeführt, und dann haben sich die Dinge wieder normalisiert.
quelle
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
Stellen Sie mit diesem Befehl sicher, dass die installierte Version erfolgreich ist
Wenn die neue Version nicht als Standard festgelegt ist, können Sie sie mit diesem Befehl festlegen
Sie können die aktuelle Ruby-Version überprüfen
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
4- Ein weiterer Fall, den Sie eingeben können
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
quelle
Ich fand, dass die Neuinstallation von RVM den Trick tat, als dieser Fehler auftrat, da jeder andere Vorschlag nicht funktionierte.
quelle
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.
quelle
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.
quelle
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
quelle
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.
quelle
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 hatteasdf
mit 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 ruby
den 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.quelle
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.
quelle
Ich verwende die Windows-Entwicklungsumgebung.
Ich habe gerade
C:\Ruby22-x64\bin
meine Pfadvariable vor derheroku\bin
Eingabe hinzugefügt .quelle