J'ai créé un projet Ruby, mais lors de l'exécution de bundle update
et bundle install
, une erreur est renvoyée:
Your Ruby version is 1.9.3, but your Gemfile specified 2.0.0
Une image de celui-ci est: http://i.imgur.com/dZMhI11.png?1
Mon gemfile est:
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
Si vous exécutez Ruby -v
, vous verrez que vous avez installé Ruby 1.9.3, mais la première ligne de votre Gemfile indique que vous souhaitez utiliser Ruby 2.0.0.
Vous devez installer Ruby 2.0.0 ou modifier la première ligne de votre Gemfile pour spécifier Ruby 1.9.3.
échantillon de 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'
J'ai remarqué ce qui se passait lorsque j'ai essayé de bundle install
avec un nouveau gemset RVM qui n'incluait pas encore le bundle (car il est tombé sur l'installation du bundler système qui faisait référence au système Ruby).
Exécuter gem install bundler
corrigé pour moi.
Rien de tout cela n'a fonctionné pour moi, mais j'ai finalement compris:
spring stop
J'avais un projet Rails 4 qui utilisait quelque chose appelé Spring pour maintenir un environnement Rails actif en arrière-plan, par souci de rapidité.
J'avais commencé Spring avec Ruby 2.1.1 mais je suis passé à la version 2.1.2 (dans Gemfile et .Ruby-version). Ma théorie est que Spring a continué à fonctionner sur 2.1.1 et a donc causé cette erreur.
Heroku Toolbelt peut en être la cause si vous utilisez la commande heroku
, ou plus spécifiquement, avec bundle exec heroku
, ce que vous ne devriez jamais faire. Si vous pouvez résoudre votre problème en supprimant bundle exec
avant vos appels heroku
, essayez-le d'abord. Sinon, suivez ce qui est suggéré ci-dessous.
Mise à jour du 25 février 2017:
Heroku Toolbelt ont été renommés Heroku CLI. Voir ces liens pour des instructions d'installation/de désinstallation mises à jour:
https://devcenter.heroku.com/articles/heroku-cli
https://github.com/heroku/cli
La publication originale est fournie ci-dessous (pour les instructions héritées):
En haut de /usr/bin/heroku
, il est probablement indiqué quelque chose comme #!/usr/local/heroku/Ruby/bin/Ruby
Essayez d’exécuter /usr/local/heroku/Ruby/bin/Ruby -v
et voyez s’il affiche Ruby 1.9.3.
https://github.com/heroku/toolbelt/issues/53
› heroku --version
heroku-toolbelt/3.26.1 (x86_64-darwin10.8.0) Ruby/1.9.3
Remarquez le 1.9.3 spécifié à la fin.
--- Ne PAS utilisez cette page, ainsi que son programme d'installation, pour installer la CLI Heroku sur OSX:
Parce que les détails techniques énumérés sont importants:
Le client de ligne de commande heroku sera installé dans/usr/local/heroku et/usr/local/heroku/bin sera ajouté à votre CHEMIN.
Ceci est préjudiciable, car RVM fera alors ceci:
› rvm current
Ruby-2.1.1
› heroku --version
heroku-toolbelt/3.26.1 (x86_64-darwin10.8.0) Ruby/1.9.3
Il y a cette version 1.9.3 irritante, même lorsque j'ai spécifié une autre version de Ruby avec RVM.
Il n'y a pas de programme de désinstallation officiel pour OSX, écrivez +1 ici si vous pensez qu'il devrait en exister un: https://github.com/heroku/toolbelt/issues/8
Désinstallez manuellement (en déplaçant vers la corbeille, pour conserver une sauvegarde, en cas de problème):
mv ~/.heroku ~/.Trash
Sudo mv /usr/local/heroku ~/.Trash
Sudo mv /usr/bin/heroku ~/.Trash
Parce qu’il relie correctement la version actuelle du RVM à la ceinture d’outils Heroku. Courir:
brew install heroku-toolbelt
Heroku toolbelt ne sera alors installé qu’à cet emplacement:
/usr/local/Cellar/heroku-toolbelt/3.21.4
(Vous pouvez également le supprimer facilement avec brew uninstall heroku-toolbelt
si vous le souhaitez.)
Test de l'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.
Notez qu'il est maintenant indiqué 2.0.0 à la fin de cette dernière commande. Vous exécutez maintenant le client Heroku avec la version rvm current
Ruby que vous avez spécifiée dans RVM.
Si vous tapez rvm list
et que la version 2.0 de Ruby est la version 2.0 actuelle et que vous obtenez toujours cette erreur, la saisie de rvm use (Ruby version)
a résolu ce problème pour moi.
"J’ai eu le même problème lors de l’utilisation de rbenv, installé via brassage.
Je n'arrivais pas à comprendre, j'ai essayé tout ce qui précède, j'ai finalement basculé sur rvm qui l'a résolu.
En réponse à ce message, vous devez vous assurer d'exécuter rbenv rehash
après avoir installé une version de Ruby. Cela a semblé fonctionner pour moi quand j'ai rencontré le même problème.
Si vous utilisez un gestionnaire de versions Ruby tel que RVM ou rbenv, créez dans le répertoire de niveau supérieur de votre projet un fichier nommé .Ruby-version
contenant la version spécifiée dans votre Gemfile, par exemple:
2.0.0
Apparemment, c’est la manière cross -{rbenv,rvm}
de spécifier la version maintenant.
Ruby-switch a été retiré d'ubuntu 14.04 et supérieur . Je laisserai cette réponse à la postérité, mais vous avez probablement besoin d'une solution différente. Découvrez " Installer Ruby 2.0 sans Ruby-switch? " également.
Si vous avez déjà installé une nouvelle version de Ruby mais que vous rencontrez toujours des erreurs concernant l'incompatibilité de Gemfile, vous devrez probablement utiliser Ruby-switch
pour définir la nouvelle version de Ruby comme valeur par défaut:
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
Dans mon cas, j'ai utilisé rvm get head
pour mettre à jour la version de RVM et cela a fonctionné.
J'ai constaté que la réinstallation de RVM avait fait l'affaire lorsque cette erreur s'était produite, car aucune autre suggestion ne fonctionnait.
J'ai eu ce problème après la mise à niveau des versions de Ruby via rbenv. J'ai essayé la commande spring stop
que quelqu'un a mentionnée ci-dessus.
Lorsque j’ai couru, j’ai reçu un autre message me suggérant d’exécuter gem pristine --all
Avertissement: Exécuter gem Pristine --all pour régénérer votre installé gemspecs améliorera les performances de démarrage de Spring.
J'ai donc exécuté cette commande, puis les choses sont revenues à la normale.
Suggestion à quiconque de rechercher ce problème et aucune des solutions habituelles ne le résolvent pour vous. Vérifiez si vous disposez de plus d'un gestionnaire de version Ruby. Il existe plusieurs gestionnaires de version et certains logiciels ou scripts d'installation en utilisent différents. Je connais rbenv
, rvm
, asdf
et au moins un autre dont je ne me souviens pas du nom. J'ai installé asdf
avec un outil différent sans me rendre compte que cela s'est produit et que cela a provoqué la non-concordance de version spécifiée.
Pour vérifier cela, exécutez which Ruby
et examinez attentivement le chemin. Si ce n'est pas le gestionnaire de version auquel vous vous attendez, vous souffrez de ce problème. La solution la plus simple consiste à utiliser celui que vous voulez et à vous en débarrasser. Si, pour une raison quelconque, vous devez conserver les deux, vous devrez probablement modifier l'ordre des chemins dans le fichier .rc de votre shell.
Je suis tombé sur cette erreur en utilisant la gemme du passager. Depuis que j'ai installé ce petit bijou avec un accès Sudo, il a pris lui-même une version par défaut de Ruby. Je pense que la raison pourrait être que Ruby a été installé sans accès Sudo sur mon système et que le passager ne connaissait pas la version réelle de Ruby à utiliser.
Cependant, l’installation de la gemme et de son module Apache sans accès Sudo a résolu le problème.
J'ai eu le même problème en utilisant Rbenv, installé via Homebrew.
Je ne pouvais pas le comprendre, j'ai essayé tout ce qui précède, alors j'ai fini par passer à RVM qui l'a résolu.
J'ai découvert que mon script rake ou Rails sous le répertoire bin utilisait une autre version de Ruby. J'ai comparé deux scripts rake de deux serveurs (production et développement) et cela m'a montré qu'ils utilisaient différentes versions de Ruby. J'ai donc dû mettre à jour en conséquence.
1c1
< #!/usr/bin/env Ruby
---
> #!/usr/bin/env Ruby1.9.1