rbenv no cambia la versión de ruby

Instalé rbenv de acuerdo con las instrucciones de github. Estoy ejecutando OSX pero he intentado esto en una máquina virtual Ubuntu 12.04 y obtuve los mismos resultados. Lo siguiente es lo que obtengo en mi terminal cuando trato de cambiar las versiones de ruby:

rbenv versions * 1.9.3-p0 (set by /Users/user/.rbenv/version) 1.9.3-p125 rbenv global 1.9.3-p0 rbenv rehash ruby -v ruby 1.8.7 (2011-12-28 patchlevel 357) [universal-darwin11.0] which ruby /usr/bin/ruby 

Alguien tiene alguna idea de por qué rbenv no está cambiando la versión de Ruby como cree que es? Además, no hay ningún archivo .rbenv en el directorio local que estaría causando que la versión de ruby ​​se ponga por defecto en 1.8.7

 rbenv local rbenv: no local version configured for this directory 

Compruebe que PATH contiene $ HOME / .rbenv / shims y $ HOME / .rbenv / bin

 $ env | grep PATH 

También verifique que tiene lo siguiente en su ~ / .bash_profile si usa bash o ~ / .zshenv si usa zsh

 export PATH="$HOME/.rbenv/bin:$PATH" eval "$(rbenv init -)" 

NOTA: asegúrese de que sea la última configuración en su ~ / .bash_profile. Me encontré con un problema donde instalé un progtwig que actualizó mi .bash_profile y reinicié PATH.

Esta puede ser una vieja pregunta, pero Google me guió hasta aquí y, por el bien de la posteridad, pensé que la compartiría.

Mi problema persistió después de muchas de las soluciones recomendadas anteriormente. Al igual que el OP, instalé rbenv y luego una versión de ruby, pero mi computadora portátil entró en default al sistema. Lo que había pasado por alto era que cuando corría:

 [~/.rbenv] $ rbenv versions * system (set by /Users/alphadogg/.rbenv/version) 2.0.0-p247 

IOW, todavía estaba por defecto al sistema. Un rápido

 [~/.rbenv] $ rbenv local 2.0.0-p247 

lo cambié a la nueva versión.

Lo arreglé agregando lo siguiente a mi ~ / .bash_profile:

 #PATH for rbenv export PATH="$HOME/.rbenv/shims:$PATH" 

Esto es lo que está documentado en https://github.com/sstephenson/rbenv .

Por lo que puedo decir, no hay directorio ~ / .rbenv / bin, que fue mencionado en la publicación por @rodowi.

Acabo de encontrar el mismo problema. Lo que hice fue desinstalar rbenv (a través de homebrew) y reinstalarlo. También agregué

 if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi 

en ~ / .bash_profile cuando reinstalé rbenv. Funciona perfectamente ahora

El primer paso es averiguar a qué ruby ​​se está llamando:
which ruby

Tu sistema dice:
/usr/bin/ruby

Esta NO es la cuña utilizada por rbenv, que (en MacOS) debería verse así:
/Users//.rbenv/shims/ruby

El shim es en realidad un script que actúa como un redireccionamiento a la versión de ruby ​​que estableces.

rbenv global 1.9.3 rbenv local --unset rbenv shell --unset
Recomiendo que para solucionar problemas desactive la versión “local” específica del proyecto y la versión de shell “shell” específica y simplemente pruebe usando la configuración de versión “global” que se determina en un archivo de texto sin formato en ~ / .rbenv / verion que será el número de versión “1.9.3” en su caso. Puede hacer “ls -laG” en la raíz de su carpeta de proyecto (no en la carpeta de inicio) para asegurarse de que ya no hay un archivo “.ruby-version” allí.

Puede usar “versiones de rbenv” para identificar qué versión está configurada para usar rbenv (y la ubicación y el nombre del archivo que está configurando eso).

rbenv versions

NINGUNO DE ESO IMPORTA: hasta que establezca el camino correctamente.

Use esto para asegurarse de que su * MacOS lo obedecerá:
eval "$(rbenv init -)"

Seguido por:
which ruby

Para asegurarse de que se vea como: /Users//.rbenv/shims/ruby

A continuación, agregue la línea a su perfil para que se ejecute cada vez que abra una nueva ventana de terminal:
~/.bash_profile eval "$(rbenv init -)"

Hay otras formas de modificar la ruta, siéntase libre de sustituirlas en lugar de ejecutar el init de rbenv.

NOTA: reinstalar Rails con:
gem install rails

Si estabas tratando de ejecutar Ruby on Rails, entonces necesitas tener todo esto funcionando primero, luego instala la gem de los Rails nuevamente. Una instalación anterior de Rails utilizará una ruta codificada para el Ruby equivocado y varias otras estarán en el lugar equivocado, así que simplemente instale nuevamente la gem.

PD: si su MacOS no lo obedece (* mencionado anteriormente), entonces puede que tenga que encontrar otra forma de modificar su ruta, pero es poco probable que sea un problema porque “las Mac solo funcionan”;)

En mi caso, cambiar el ~/.zshenv no funcionó. Tuve que hacer los cambios dentro de ~/.zshrc .

Acabo de agregar:

 # Include rbenv for ZSH export PATH="$HOME/.rbenv/bin:$PATH" eval "$(rbenv init -)" 

en la parte superior de ~/.zshrc , reinició el shell y se desconectó.

Verifique si funcionó:

 ➜ ~ rbenv install 2.4.0 ➜ ~ rbenv global 2.4.0 ➜ ~ rbenv global 2.4.0 ➜ ~ ruby -v ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-darwin16] 

rbenv help shell

“Establece una versión de Ruby específica del shell estableciendo la variable de entorno ‘RBENV_VERSION’ en su shell. Esta versión anula las versiones específicas de localapplication y la versión global. Debe ser una cadena que coincida con una versión de Ruby conocida por rbenv. ‘usará su sistema predeterminado Ruby. Ejecute las versiones de rbenv’ para obtener una lista de las versiones de Ruby disponibles. ”

Siempre que se haya instalado rbenv correctamente, ruby ​​-v corresponderá a

rbenv shell 1.9.3-p125

Tuve el mismo problema, pero causado por Homebrew:

 [~]$ rbenv version 2.3.0 (set by /Users/user/.rbenv/version) [~]$ ruby -v ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin16] [~]$ which ruby /usr/local/bin/ruby 

De alguna manera, también había instalado Ruby a través de Homebrew, y la ruta Homebrew estaba por delante de la ruta rbenv en mi $PATH . Ejecutando brew uninstall ruby arregló para mí.

Llegué al mismo problema. Se corrigió esto ejecutando el comando “rbenv global” con “sudo”. Creo que fue un problema de permiso.

actualización: finalmente encontré la solución. Había una misma “versión” de archivo en mi mac, que se encuentra en “/usr/local/Cellar/rbenv/0.3.0/”. Creo que fue creado por error de vez en cuando. deberías eliminarlo

Cuando tuve estos síntomas, el problema resultó ser que la instalación había fallado a mitad de camino para la nueva versión de Ruby a la que intentaba cambiar, sin que me diera cuenta. La solución fue eliminarlo y reinstalarlo.

(Esto significaba que a pesar de que el ruby ​​1.9.3 aparecía en la lista rbenv de versiones disponibles, no tenía un ejecutable en la ruta donde rbenv suponía que lo haría. Puesto que rbenv intenta cambiar su versión de ruby ​​simplemente anteponiendo una ubicación a su camino, si no hay nada realmente en la ubicación que precede, su sistema operativo continuará buscando su ruta predeterminada y encontrará la versión de su sistema, en mi caso como la pregunta 1.8.7.)

Esto me pasó justo después de reinstalar rbenv . Aparentemente tenía un archivo .ruby-version en mi directorio de inicio, especificando una versión que ya no existía. Una vez que eliminé el archivo, todo funcionó.

En cuanto a mí, la forma más fácil de usar rbenv junto con zsh es agregar la sección rbenv a los complementos en .zshrc config. En mi caso, se parece a:

 # Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*) # Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/ # Example format: plugins=(rails git textmate ruby lighthouse) # Add wisely, as too many plugins slow down shell startup. plugins=(git bower rails ruby rbenv gulp npm node nvm sublime) 

Después de eso, no hay problemas al instalar, cambiar, usar versiones ruby ​​con la ayuda de rbenv .

Recuerde reiniciar su sesión de terminal después de realizar cambios.

Ejecuta este comando

Agrega rbenv a bash para que se cargue cada vez que abras una terminal

 echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile source ~/.bash_profile 

esto resolverá tu problema Referencia

Asegúrese de que la última línea de su .bash_profile sea:

 export PATH="$HOME/.rbenv/bin:$PATH" eval "$(rbenv init -)" 

para el usuario de shell de pescado

 set --universal fish_user_paths $fish_user_paths ~/.rbenv/shims/ 

correr:

 rbenv init 

Después de ejecutar eso, cuando configuro mi versión local de rbenv:

 rbenv local 2.4.0 

entonces mis versiones ruby -v y my rbenv local coincidieron.

Nota: También es posible que desee salir del directorio en el que se encuentra y luego regresar a él. He notado que era necesario para que las cosas funcionen.

Curiosamente, la versión de rbenv no configuró el archivo .rbenv Verifique con: ls -ltra -> para ver que se escribió un rbenv

Podrías intentar usar Chruby ? chruby no depende de calzas, sino que solo modifica PATH , GEM_HOME , GEM_PATH .

Olvidé eliminar rvm antes de instalar rbenv. Eliminé rvm y reinstalé rbenv, pero el sistema aún no usaba la versión de Ruby designada como global por rbenv. Intenté cerrar Terminal, pero solo funcionó una vez que reinicié todo el equipo.