chruby - Gestor de instalaciones de Ruby

Publicado el Miércoles, 12 de junio de 2013
Ruby

Ruby

Desde que empecé a programar en Ruby, siempre usé RVM como herramienta para gestionar el Ruby que uso. Hay varias implementaciones del lenguaje de programación: MRI (la implementación de referencia de facto), JRuby, Rubinius, etc., y versiones: 1.8 (en desuso, ya no recibe actualizaciones), 1.9.2, 1.9.3 y también 2.0.

Herramientas como RVM nos ayudan a instalar distintas versiones e implementaciones y usarlas según nuestras necesidades de forma bastante directa y sencilla. En el Ruby meetup de Diciembre 2012 hablamos de RVM entre otras cosas.

Como recientemente formateé mi PC de escritorio, tuve que reinstalar una herramienta para gestionar Ruby. No he encontrado problemas usando RVM, pero siempre viene bien aprender algo nuevo. Así que pensé aprovechar la oportunidad para probar rbenv, otro gestor de versiones de Ruby muy defendido por los que lo usan.

Empecé a instalar rbenv, pero un tweet de Jano me hizo reconsiderar: prueben chruby https://github.com/postmodern/chruby. Ya me habían mencionado chruby en una conversación anterior, pero no había tenido oportunidad de probar ambos. Me decidí dejar de lado rbenv por ahora, e ir directo a la instalación de chruby.

El proyecto es más simple y liviano que tanto RVM y rbenv. Creo que fue todo más sencillo de instalar que con RVM, o sentía más una noción de lo que estaba pasando. O será que hace mucho que no instalo RVM... Pero s

chruby - changes the current Ruby

Algunas de sus características:

  • actualiza $PATH.
  • Agrega los directorios de ejecutables de RubyGems bin/ a $PATH.
  • Setea las variables $GEM_HOME y $GEM_PATH correctamente.
  • Usuarios: Las gemas se instalan en ~/.gem/$ruby/$version.
  • Root: las gemas se instalan en /path/a/$ruby/$gemdir.
  • Setea $RUBY_ROOT, $RUBY_ENGINE, $RUBY_VERSION y $GEM_ROOT.

Instalar:

wget -O chruby-0.3.5.tar.gz https://github.com/postmodern/chruby/archive/v0.3.5.tar.gz
tar -xzvf chruby-0.3.5.tar.gz
cd chruby-0.3.5/
sudo make install

Ahora pueden hacer dos cosas:

  1. ejecutar el script setup.sh (en el directorio scripts y ejecutarlo como root) que instala chruby y las últimas versiones de Ruby, JRuby y Rubinius.
  2. Lo que hice yo, como no quería instalar tanta versión, seguí a mano.

Para configurar chruby, hay que agregar lo siguiente a /etc/profile.d/chruby.sh, ~/.bashrc o ~/.zshenv:

source /usr/local/share/chruby/chruby.sh

Para habilitar chruby a nivel de sistema, hay que agregar este código a /etc/profile.d/chruby.sh:

[ -n "$BASH_VERSION" ] || [ -n "$ZSH_VERSION" ] || return
 
source /usr/local/share/chruby/chruby.sh

Para definir un Ruby por defecto, hay que llamar a chruby en ~/.bashrc o ~/.zshrc.

A la hora de instalar una nueva versión de Ruby, podemos usar ruby-install:

wget -O ruby-install-0.1.4.tar.gz https://github.com/postmodern/ruby-install/archive/v0.1.4.tar.gz
tar -xzvf ruby-install-0.1.4.tar.gz
cd ruby-install-0.1.4/
sudo make install

En mi caso como estoy usando Mint, basado en Ubuntu, tuve que instalar algunas dependencias para instalar Ruby, pueden ver la lista por sistemas en la wiki de ruby-install:

sudo apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev \ 
     libreadline-dev libncurses5-dev libffi-dev

Terminadas las configuraciones, probé de instalar Ruby 2.0. Ejecuté el comando ruby-install ruby 2.0.0 y tras esperar unos minutos, tengo Ruby en mi máquina:

fernando@hoth ~ $ chruby
ruby-2.0.0-p195
fernando@hoth ~ $ chruby 2.0
Using ruby-2.0.0
fernando@hoth ~ $ ruby --version
ruby 2.0.0p195 (2013-05-14 revision 40734) [x86_64-linux]

Habrá que probarlo un tiempo a ver qué tal es en comparación a RVM.

2 comentarios en este post

Feed de comentarios
  1. Avatar

    visigoten 13 junio. 2013 - 21:04

    Para instalarlo podes hacerlo con una instalación de ruby existente o tenes que partir de un S/O sin ruby?
    Tenes alguna referencia para usarlo en servidores?

    • Avatar

      Fernando 14 junio. 2013 - 00:50

      En la máquina recién formateada, instalé chruby sin instalar los paquetes de Ruby del sistema. Y creo que si ya tenés una versión instalada no pasa nada, porque sobreescribe el $PATH entonces debe agarrar el Ruby de chruby.

      Ni idea en servidores, pero sé que RVM se usa, el que puede tener más idea es Martín Loy (buena charla para un meetup).

Dejar un comentario

Toasty!