rbenv no cambia la versión de Ruby

Resuelto ajorgensen asked hace 12 años • 32 respuestas

Instalé rbenv según las instrucciones de github. Estoy ejecutando OSX pero probé esto en una máquina virtual Ubuntu 12.04 y obtuve los mismos resultados. Lo siguiente es lo que aparece 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 cambia la versión Ruby como cree? Además, no hay ningún archivo .rbenv en el directorio local que pueda causar que la versión de Ruby sea 1.8.7 por defecto.

rbenv local
rbenv: no local version configured for this directory
ajorgensen avatar Jun 08 '12 05:06 ajorgensen
Aceptado

Compruebe que PATH contenga $HOME/.rbenv/shimsy$HOME/.rbenv/bin

$ env | grep PATH

También verifique que tenga 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 al instalar un programa que actualizó mi .bash_profile y restableció la RUTA.

Finalmente, asegúrese de que su $HOMEcarpeta no tenga un .ruby-versionarchivo que haya creado por accidente si lo hubiera hecho $ rbenv local <ruby-version>en su $HOMEcarpeta. Al hacerlo $ rbenv global <ruby-version>se modifica el $HOME/.rbenv/versionarchivo y la existencia de un .ruby-versionarchivo en la $HOMEcarpeta anularía la versión establecida por $HOME/.rbenv/version.

De los documentos:

Elegir la versión de Ruby Cuando ejecuta un shim, rbenv determina qué versión de Ruby usar leyéndola de las siguientes fuentes, en este orden:

La variable de entorno RBENV_VERSION, si se especifica. Puede utilizar el comando de shell rbenv para configurar esta variable de entorno en su sesión de shell actual.

El primer archivo de versión .ruby que se encuentra buscando en el directorio del script que está ejecutando y en cada uno de sus directorios principales hasta llegar a la raíz de su sistema de archivos.

El primer archivo de versión .ruby que se encuentra buscando en el directorio de trabajo actual y en cada uno de sus directorios principales hasta llegar a la raíz de su sistema de archivos. Puede modificar el archivo .ruby-version en el directorio de trabajo actual con el comando local rbenv.

El archivo global ~/.rbenv/version. Puede modificar este archivo usando el comando global rbenv. Si el archivo de versión global no está presente, rbenv asume que desea utilizar el "sistema" Ruby, es decir, cualquier versión que se ejecutaría si rbenv no estuviera en su ruta.

defvol avatar Aug 27 '2012 22:08 defvol

Solucioné 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 ~/.rbenv/bin un directorio, como lo mencionó @rodowi en la publicación.

mjmdavis avatar Apr 25 '2013 13:04 mjmdavis

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

Mi problema persistió después de muchas de las soluciones recomendadas anteriormente. Al igual que el OP, instalé rbenv y luego una versión Ruby, pero mi computadora portátil tenía el sistema predeterminado. 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

OIA, todavía estaba predeterminado en el sistema. Un rápido

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

lo cambié a la nueva versión.

alphadogg avatar Jul 15 '2013 23:07 alphadogg

El primer paso es averiguar a qué rubí se llama:

$ which ruby

Su sistema dice:

/usr/bin/ruby

Esta NO es la corrección utilizada por rbenv, que (en MacOS) debería verse así:

/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 configuraste.

Recomiendo que para solucionar problemas desactive la versión "local" específica del proyecto y la versión "shell" específica del shell y simplemente pruebe usando la configuración de la versión "global" que se determina en un archivo de texto sin formato en ~/.rbenv/version que será solo el número de versión "1.9.3" en su caso.

$ rbenv global 1.9.3
$ rbenv local --unset
$ rbenv shell --unset

Puede hacerlo ls -laGen la raíz de la carpeta de su proyecto (no en la carpeta de inicio) para asegurarse de que ya no haya un archivo ".ruby-version" allí.

Puede utilizar rbenv versionspara identificar qué versión está configurada para usar rbenv (y la ubicación y el nombre del archivo que la configura):

$ rbenv versions

NADA DE ESO IMPORTA hasta que establezcas el camino correctamente.

Utilice esto para asegurarse de que su *MacOS le obedezca:

$ rbenv init -

Seguido por:

$ which ruby

Para asegurarse de que se vea así:

/Users/<username>/.rbenv/shims/ruby

Luego ejecute esto para agregar la línea a su perfil para que se ejecute cada vez que abra una nueva ventana de terminal:

$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

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

NOTA: reinstale los rieles con:

$ gem install rails

Si estaba intentando ejecutar Ruby on Rails, primero debe tener todo esto funcionando y luego instalar la gema Rails nuevamente. Una instalación anterior de Rails utilizará una ruta codificada al Ruby incorrecto y varias otras cosas estarán en el lugar incorrecto, así que simplemente instale la gema nuevamente.

PD: Si tu MacOS no te obedece (*mencionado anteriormente), es posible que tengas que encontrar otra forma de modificar tu ruta, pero es poco probable que sea un problema porque "las Mac simplemente funcionan";)

Sky Notify avatar Aug 31 '2016 00:08 Sky Notify