Cómo solucionar “Tu versión de Ruby es 1.9.3, pero tu Gemfile especificó 2.0.0”

Creé un proyecto de Ruby, pero cuando bundle update bundle install y la bundle install , devuelve un error:

 Your Ruby version is 1.9.3, but your Gemfile specified 2.0.0 

Una imagen de esto es: http://sofes.miximages.com/ruby-on-rails/dZMhI11.png?1

Mi gemfile es:

 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 ejecuta ruby -v , verá que ha instalado Ruby 1.9.3, pero la primera línea de su Gemfile especifica que desea usar Ruby 2.0.0.

Debe instalar Ruby 2.0.0 o cambiar la primera línea en su Gemfile para especificar Ruby 1.9.3.

muestra 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' 

Me di cuenta de que esto sucedía cuando intenté bundle install con un gemset RVM nuevo que aún no incluía el bundler (ya que recaía en la instalación del bundler del sistema que hacía referencia al ruby ​​del sistema).

Ejecutando el gem install bundler arreglado para mí.

Ninguno de estos funcionó para mí, pero finalmente lo descubrí:

 spring stop 

Tenía un proyecto de Rails 4 que usa algo llamado Spring para mantener el entorno de Rails ejecutándose en segundo plano, para mayor velocidad.

Comencé Spring con Ruby 2.1.1 pero luego actualicé a 2.1.2 (en Gemfile y .ruby-version). Mi teoría es que Spring siguió funcionando en 2.1.1 y por eso causó este error.

Heroku Toolbelt puede estar causando esto si estás usando el comando heroku , o más específicamente, usando bundle exec heroku , lo cual nunca debes hacer. Si puede solucionar su problema eliminando bundle exec delante de sus llamadas heroku , intente eso primero. De lo contrario, siga lo que se sugiere a continuación.


Actualización 25 de febrero de 2017:
Heroku Toolbelt ha sido renombrado a Heroku CLI . Consulte estos enlaces para obtener instrucciones de instalación / desinstalación actualizadas:
https://devcenter.heroku.com/articles/heroku-cli
https://github.com/heroku/cli

La publicación original se proporciona sin editar a continuación (para instrucciones heredadas):


Si ha instalado el cinturón de herramientas de Heroku en el sitio oficial:

En la parte superior de /usr/bin/heroku probablemente dice algo como #!/usr/local/heroku/ruby/bin/ruby

Intente ejecutar /usr/local/heroku/ruby/bin/ruby -v y vea si emite 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 

Observe el 1.9.3 especificado al final allí.

NO use esta página ni su instalador empaquetado para instalar Heroku CLI en OSX:

https://toolbelt.heroku.com/

Porque los detalles técnicos enumerados allí son importantes:

El cliente de línea de comando heroku se instalará en / usr / local / heroku y / usr / local / heroku / bin se agregará a su RUTA.

Esto es perjudicial, porque RVM hará esto:

 › rvm current ruby-2.1.1 › heroku --version heroku-toolbelt/3.26.1 (x86_64-darwin10.8.0) ruby/1.9.3 

Existe esa irritante versión 1.9.3, incluso cuando he especificado otra versión de Ruby con RVM.

Desinstalar el cinturón de herramientas de Heroku

No hay un desinstalador oficial para OSX, escriba +1 aquí si cree que debería haber uno: https://github.com/heroku/toolbelt/issues/8

Desinstalar manualmente (mover a la Papelera, para mantener una copia de seguridad, en caso de que algo falle):

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

Instale el cinturón de herramientas Heroku con homebrew en su lugar

Porque vincula la versión RVM actual al Heroku-toolbelt correctamente. Correr:

brew install heroku-toolbelt

Heroku toolbelt se instalará solo en esta ubicación:

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

(También podría eliminarlo fácilmente con brew uninstall heroku-toolbelt si lo desea).

Probando la instalación:

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

Observe que ahora dice 2.0.0 al final de ese último comando allí. Ahora ejecuta el cliente de Heroku con la versión rvm current ruby que haya especificado en RVM.

Si escribe rvm list y muestra una versión 2.0 de Ruby como su versión actual y todavía está obteniendo este error, al escribir el rvm use (ruby version) solucionó este problema.

“Tuve el mismo problema al usar rbenv, instalado a través de brew.

No pude entenderlo, intenté todo lo anterior, terminé cambiando a rvm, que lo resolvió “.

En respuesta a esta publicación, debe asegurarse de ejecutar rbenv rehash después de instalar una versión de ruby. Eso pareció funcionar para mí cuando me encontré con el mismo problema.

Si está usando un administrador de versiones de Ruby como RVM o rbenv, entonces cree, en el directorio de nivel superior de su proyecto, un archivo llamado .ruby-version contenga la versión especificada en su Gemfile, por ejemplo:

 2.0.0 

Esa aparentemente es la forma de cruzar la {rbenv,rvm} de especificar la versión ahora.

ruby-switch fue eliminado de Ubuntu 14.04 y posteriores . Dejaré esta respuesta para la posteridad, pero probablemente necesites una solución diferente. Echa un vistazo a ” Instalar Ruby 2.0 sin ruby-switch? ” También.


Si has instalado una nueva versión de Ruby pero sigues recibiendo errores sobre la incompatibilidad de Gemfile, probablemente necesites usar ruby-switch para establecer la nueva versión de Ruby como tu predeterminada:

 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 

En mi caso, utilicé rvm get head para actualizar la versión RVM y funcionó.

Descubrí que la reinstalación de RVM funcionaba bien cuando se producía este error, ya que ninguna otra sugerencia funcionaba.

Tuve este problema después de actualizar las versiones de Ruby a través de rbenv. Intenté el comando de spring stop que alguien mencionó anteriormente.

Cuando corrí recibí otro mensaje sugiriendo que ejecutara gem pristine --all

Advertencia: ejecutar prístina de gem: todo para regenerar las gemspecs instaladas mejorará el rendimiento de inicio de Spring.

Así que ejecuté ese comando, y luego las cosas volvieron a la normalidad.

Tuve el mismo problema al usar rbenv, instalado a través de Homebrew.

No pude entenderlo, intenté todo lo anterior, así que terminé cambiando a RVM que lo resolvió.

Descubrí que mi script de rake o rails en el directorio bin estaba usando otra versión de ruby. Comparé dos scripts de rake de dos servidores (producción y desarrollo) y me mostró que estaban usando diferentes versiones de ruby. Así que tuve que actualizar en consecuencia.

 1c1 < #!/usr/bin/env ruby --- > #!/usr/bin/env ruby1.9.1 

Comparto este bocado en un momento de gran alivio después de haber resuelto finalmente un problema que me ha perseguido durante meses.

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

Probé literalmente cada solución a este problema que pude encontrar en la web y al final del día resultó que mi problema fue causado porque accidentalmente había instalado una aplicación de Rails en Users / MyName, y estaba leyendo ese Gemfile.

Así que antes de ir a probar las otras soluciones que se ofrecen aquí, es posible que desee tomar un segundo para confirmar que no ha hecho algo similar.

Estoy ejecutando el entorno de desarrollo de Windows.

Acabo de agregar C:\Ruby22-x64\bin en mi variable de ruta antes de la entrada de heroku\bin .

Tuve este problema exacto: solo unos segundos después de ver el terminal Mac OSX confirmar que Ruby 2.0.0 se instaló correctamente.

Mac OSX se envía con una versión desactualizada de Ruby ya instalada y configurada como Ruby predeterminada. Para corregir el problema, puede instalar “JewelryBox”, una encantadora y encantadora aplicación que le ofrece una GUI para ver y administrar múltiples rubies (útil si tiene múltiples entornos de desarrollo en una Mac). Puede usarlo para deseleccionar Ruby predeterminado de Mac OSX y seleccionar su Ruby recién instalado.