rbenv no cambia la versión de ruby


Instalé rbenv de acuerdo con las instrucciones de github. Estoy ejecutando OSX, pero he probado esto en una VM Ubuntu 12.04 y obtuve los mismos resultados. Lo siguiente es lo que obtengo en mi terminal cuando intento 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? También hay no .archivo rbenv en el directorio local que estaría causando que la versión de ruby sea por defecto 1.8.7

rbenv local
rbenv: no local version configured for this directory
 192
Author: Eric Leschinski, 2012-06-08

19 answers

Compruebe que la RUTA contiene HOME HOME/.rbenv / cuñas y HOME INICIO/.rbenv / bin

$ env | grep PATH

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

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

NOTA: Asegúrese de que es la última configuración en su~/.bash_profile . Me encontré con un problema donde instalé un programa que actualizó mi .bash_profile y restablecer RUTA.

 372
Author: rodowi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-21 04:23:40

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

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 pasó al sistema por defecto. Lo que había pasado por alto fue que cuando corrí:

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

IOW, todavía estaba incumpliendo con el sistema. Un rápido

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

Lo cambió a la nueva versión.

 78
Author: alphadogg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-15 23:41:26

Arreglé esto 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 el post por @rodowi.

 68
Author: mjmdavis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-24 03:28:29

Acabo de encontrar este mismo problema. Lo que hice fue desinstalar rbenv (a través de homebrew) y reinstalarlo. También he añadido

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

En ~/.bash_profile cuando reinstalé rbenv. Ahora funciona perfectamente.

 20
Author: Neal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-18 18:47:39

El primer paso es averiguar a qué ruby se llama:
which ruby

Su sistema dice:
/usr/bin/ruby

Este NO es el shim utilizado por rbenv, que (en macOS) debería parecerse a:
/Users/<username>/.rbenv/shims/ruby

El shim es en realidad un script que actúa como una redirección a la versión de ruby que establezcas.

rbenv global 1.9.3 rbenv local --unset rbenv shell --unset
Recomiendo que para la solución de problemas desactive la versión "local" específica del proyecto, y la versión "shell" específica del shell y simplemente pruebe con la versión" global" configuración que se determina en un archivo de texto plano en~/.rbenv / verion que solo 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 la carpeta de inicio) para asegurarse de que ya no hay un".ruby-version " archivo allí.

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

rbenv versions

NADA DE ESO IMPORTA: hasta que establezcas la ruta correctamente.

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

Seguido de:
which ruby

Para asegurarse de que se ve como: /Usuario//.rbenv/shims / ruby

Luego agrega la línea a tu perfil para que se ejecute cada vez que abras una nueva ventana de terminal:
~/.bash_profile eval "$(rbenv init -)"

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

NOTA: reinstale Rails con:
gem install rails

Si fueras al intentar ejecutar Ruby on Rails, primero debe tener todo esto funcionando y luego instalar la gema rails de nuevo. Una instalación anterior de Rails usará una ruta codificada al ruby equivocado y varias otras cosas estarán en el lugar equivocado, así que simplemente instale la gema de nuevo.

P. S. Si su macOS no le obedecerá (*mencionado anteriormente), entonces es posible que tenga que encontrar otra manera de modificar su ruta, pero es poco probable que sea un problema porque" Macs simplemente funcionan";)

 17
Author: Sky Notify,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-31 00:29:47

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

Acabo de añadir:

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

En la parte superior de ~/.zshrc, reinició el shell y cerró la sesión.

Compruebe 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]
 8
Author: Peter Piper,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-12 09:36:15

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 la aplicación local y la versión global. debe ser una cadena que coincida con una versión de Ruby conocida por rbenv.La cadena de versión especial 'system' utilizará el Ruby predeterminado del sistema. Ejecute rbenv versions ' para obtener una lista de las versiones de Ruby disponibles."

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

rbenv shell 1.9.3-p125

 4
Author: htmldrum,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-26 13:41:53

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 había instalado Ruby a través de Homebrew también, y la ruta Homebrew estaba por delante de la ruta rbenv en mi $PATH. Correr brew uninstall ruby lo arregló para mí.

 4
Author: djb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-15 12:22:07

Llegué al mismo problema. Solucionado esto ejecutando el comando "rbenv global" con "sudo". Creo que fue un problema de permiso.

Actualizar: Finalmente encontré la solución. Había un mismo archivo " version "en mi mac, que está bajo"/usr/local/Cellar/rbenv/0.3.0/". Creo que fue creado por error de vez en cuando. deberías quitártelo.

 3
Author: Vincent,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-05 04:55:41

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 estaba tratando de cambiar, sin que me diera cuenta. La solución era eliminarlo y reinstalarlo.

(Esto significa que a pesar de que ruby 1.9.3 apareció en la lista rbenv de versiones disponibles, no tenía un ejecutable en la ruta donde rbenv asumió que lo haría. Dado que rbenv intenta cambiar su versión de ruby simplemente anteponiendo una ubicación a su ruta, si no hay nada en realidad, en la ubicación que precede, su sistema operativo continuará felizmente buscando su ruta predeterminada y encontrará su versión del sistema, en mi caso, como la pregunta 1.8.7.)

 3
Author: David,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-02 11:46:59

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

 2
Author: John K. Chow,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-14 01:42:35

En cuanto a mí, la forma más fácil de usar rbenv junto con zsh es agregar rbenv a la sección de complementos en la configuración de .zshrc. En mi caso es similar 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 de ruby con la ayuda de rbenv.

Tenga en cuenta reiniciar la sesión de terminal después de realizar los cambios.

 2
Author: Rootical V.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-07 15:03:41

Ejecute este comando

Agregue rbenv a bash para que se cargue cada vez que abra un terminal

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

Esto resolverá su problema Referencia

 2
Author: Singhak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-31 06:26:51

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

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
 2
Author: elimcjah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-12 20:53:12

Para el usuario de concha de pescado

set --universal fish_user_paths $fish_user_paths ~/.rbenv/shims/
 1
Author: Basil Mariano,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-21 00:27:43

Ejecutar:

rbenv init

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

rbenv local 2.4.0

Entonces mis ruby -v y mis rbenv local versiones coincidieron.

Nota: Es posible que también desee salir del directorio en el que se encuentra y luego volver a él, me he dado cuenta de que era necesario para mí con el fin de conseguir que las cosas funcionen.

 1
Author: AmitF,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-29 23:52:12

Extrañamente, la versión rbenv no estableció el .archivo rbenv Compruebe con: ls-ltra > > para ver que un rbenv fue escrito

 0
Author: poseid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-21 20:35:24

¿Podrías intentar usar chruby? chruby no se basa en cuñas, en su lugar solo modifica PATH, GEM_HOME, GEM_PATH.

 0
Author: postmodern,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-21 07:03:22

Olvidé eliminar rvm antes de instalar rbenv. Eliminé rvm y reinstalé rbenv, pero el sistema aún no estaba usando la versión de Ruby designada como global por rbenv. Intenté cerrar la terminal, pero solo funcionó una vez que reinicié toda la máquina.

 -1
Author: ajain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-03 06:37:46