rbenv no cambia la versión de Ruby
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
Compruebe que PATH contenga $HOME/.rbenv/shims
y$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 $HOME
carpeta no tenga un .ruby-version
archivo que haya creado por accidente si lo hubiera hecho $ rbenv local <ruby-version>
en su $HOME
carpeta. Al hacerlo $ rbenv global <ruby-version>
se modifica el $HOME/.rbenv/version
archivo y la existencia de un .ruby-version
archivo en la $HOME
carpeta 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.
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.
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.
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 -laG
en 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 versions
para 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";)