Cómo actualizar Ruby Versión 2.0.0 a la última versión en Mac OSX Yosemite?


Necesito actualizar mi versión de ruby de 2.0.0 a la última versión, no puedo usar algunas gemas porque mi versión no está actualizada. Había usado Homebrew para instalar Ruby hace algún tiempo, ¿Cómo puedo actualizar mi versión de Ruby?

 287
Author: Abhinay Reddy Keesara, 2016-07-05

9 answers

Abra su terminal y ejecute

\curl -sSL https://get.rvm.io | bash -s stable

Cuando esto se complete, necesita reiniciar su terminal para que el rvm funcione.

Ahora, corre rvm list known

Esto muestra la lista de versiones del ruby.

Ahora, corre rvm install ruby-2.4.2

Si escribe ruby -v en el terminal, debería ver ruby 2.4.2.

Si todavía te muestra ruby 2.0., ejecuta rvm use ruby-2.4.2 --default.

 541
Author: Abhinay Reddy Keesara,
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
2018-04-05 07:07:48

Solución única para preparar cerveza

Actualización:

De los comentarios (felicitaciones a Maksim Luzik), no he probado, pero parece una solución más elegante:

Después de instalar ruby a través de brew, ejecute el siguiente comando para actualizar los enlaces a la última instalación de ruby: brew link --overwrite ruby

Respuesta original:

Llegar tarde a la fiesta, pero usar cerveza es suficiente. No es necesario instalar rvm y para mí solo complicó las cosas.

Por brew install ruby en realidad está instalando la última versión (actualmente v2.4.0). Sin embargo, su camino encuentra 2.0.0 primero. Para evitar esto, simplemente cambie la precedencia (source ). Hice esto cambiando ~/.profile y estableciendo:

export PATH=/usr/local/bin:$PATH

Después de esto me di cuenta de que bundler gem todavía estaba usando la versión 2.0.0, simplemente instalarlo de nuevo: gem install bundler

 163
Author: Sergio Basurco,
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-10-30 09:07:08

Recomiendo rbenv* https://github.com/rbenv/rbenv

* Si esto cumple con sus criterios: https://github.com/rbenv/rbenv/wiki/Why-rbenv?:

Rbenv hace {

  • Proporciona soporte para especificar versiones de Ruby específicas de la aplicación.
  • Le permite cambiar la versión global de Ruby por usuario.
  • Le permite anular la versión de Ruby con un variable de entorno.

En contraste con RVM, rbenv no does

  • Necesita ser cargado en su shell. En su lugar, el enfoque shim de rbenv funciona agregando un directorio a su $PATH.
  • Anula comandos de shell como cd o requiere hacks de prompt. Eso es peligroso y propenso a errores.
  • Tiene un archivo de configuración. No hay nada que configurar excepto qué versión de Ruby desea usar.
  • Instala Ruby. Puede compilar e instalar Ruby usted mismo, o usar ruby-build para automatizar proceso.
  • Administrar conjuntos de gemas. Bundler es una mejor manera de administrar dependencias de aplicaciones. Si tienes proyectos que son aún no utilizando Bundler se puede instalar el rbenv-gemset plugin.
  • Requiere cambios en las bibliotecas de Ruby para la compatibilidad. La simplicidad de rbenv significa siempre y cuando esté en su $PATH, nada else necesita saberlo.

INSTALACIÓN

Instalar Homebrew http://brew.sh

Entonces:

$ brew update
$ brew install rbenv 
$ brew install rbenv ruby-build

# Add rbenv to bash so that it loads every time you open a terminal
echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile
source ~/.bash_profile

ACTUALIZAR
Hay un paso adicional después de brew install rbenv Ejecutar rbenv init y añadir una línea a .bash_profile como se indica. Después de eso vuelva a abrir la ventana de su terminal [[] SGI Sep 30 at 12:01 - https://stackoverflow.com/users/119770

$ rbenv install --list
Available versions:
 1.8.5-p113
 1.8.5-p114
 […]
 2.3.1
 2.4.0-dev
 jruby-1.5.6
 […]
$ rbenv install 2.3.1
[…]

Establecer la versión global:

$ rbenv global 2.3.1
$ ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]

Establezca la versión local de su repositorio agregando .ruby-version al directorio raíz de su repositorio:

$ cd ~/whatevs/projects/new_repo
$ echo "2.3.1" > .ruby-version

Para macOS visita este enlace

 86
Author: SoAwesomeMan,
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-23 12:10:44

Abrir terminal:

sudo gem update --system 

Funciona!

 44
Author: Cristianetoo Geova,
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-11-04 15:03:25

Puede especificar la última versión de ruby mirando https://www.ruby-lang.org/en/downloads/

  1. Obtener la última versión:

    curl -sSL https://get.rvm.io | bash -s stable --ruby

  2. Instalarlo:

    rvm install 2.2

  3. Úsalo como predeterminado:

    rvm use 2.2 --default

O ejecute el último comando desde ruby:

rvm install ruby --latest
rvm use 2.2 --default
 20
Author: julien bouteloup,
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-12-13 12:40:31

Forma rápida de actualizar ruby a v2.4+

brew upgrade ruby
 19
Author: fatihyildizhan,
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-06-09 13:30:44

En caso de que alguien obtenga el mismo error que yo: "Requisitos la instalación falló con el estado: 1." esto es lo que debe hacer:

Instalar Homebrew (por alguna razón podría no funcionar automáticamente) con este comando:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Luego proceda a instalar rvm de nuevo usando

curl -sSL https://get.rvm.io | bash -s stable --ruby

Salga y vuelva a abrir Terminal y luego:

rvm install 2.2
rvm use 2.2 --default
 2
Author: Paula Hasstenteufel,
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-03-03 19:51:30

En la terminal: rvm gemset use global

 0
Author: Aramis,
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-04-13 12:39:24

La forma más sencilla es definitivamente introducir el siguiente comando en la terminal:

sudo gem update --system

Puede agregar la bandera --no-document si no desea descargar la documentación. Aquí está la salida de muestra después de ejecutar el comando:

sudo gem update --system
Password:
Updating rubygems-update
Fetching: rubygems-update-2.6.8.gem (100%)
Successfully installed rubygems-update-2.6.8
Parsing documentation for rubygems-update-2.6.8
Installing ri documentation for rubygems-update-2.6.8
Installing darkfish documentation for rubygems-update-2.6.8
Installing RubyGems 2.6.8
RubyGems 2.6.8 installed
Parsing documentation for rubygems-2.6.8
Installing ri documentation for rubygems-2.6.8

------------------------------------------------------------------------------

RubyGems installed the following executables:
    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/gem

Ruby Interactive (ri) documentation was installed. ri is kind of like man 
pages for ruby libraries. You may access it like this:
  ri Classname
  ri Classname.class_method
  ri Classname#instance_method
 -3
Author: Reza Malik,
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-12-18 08:04:42