web-dev-qa-db-fra.com

Comment corriger "Votre version de Ruby est 1.9.3, mais votre Gemfile est spécifié 2.0.0"

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

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

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.

164
mistertim

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.

38
Henrik N

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):


Si vous avez installé la ceinture à outils Heroku à partir du site officiel:

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: 

https://toolbelt.heroku.com/

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.

Désinstallez la ceinture à outils Heroku

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

Installez plutôt la ceinture à outils Heroku avec homebrew

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.

29
Magne

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.

10
dysruption

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

5
Daniel Kang

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.

4
Clay Bridges

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

Dans mon cas, j'ai utilisé rvm get head pour mettre à jour la version de RVM et cela a fonctionné.

3
PallavSharma

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.

1
Shaun McDonald

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.

1
asgeo1

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.

0
agbodike

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.

0
Rishinder

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.

0
FreePender

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