ruby-on-rails - que - ruby on rails tutorial
Cómo solucionar "Tu versión de Ruby es 1.9.3, pero tu Gemfile especificó 2.0.0" (16)
"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.
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://i.imgur.com/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
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.
Descubrí que la reinstalación de RVM funcionaba bien cuando se producía este error, ya que ninguna otra sugerencia funcionaba.
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
En mi caso, utilicé rvm get head
para actualizar la versión RVM y funcionó.
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
.
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.
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''
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.
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.
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ó.
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 gema: 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 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.
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
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:
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.