chruby - Gestor de instalaciones de Ruby
Publicado el Miércoles, 12 de junio de 2013Desde 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:
- ejecutar el script
setup.sh
(en el directorioscripts
y ejecutarlo como root) que instala chruby y las últimas versiones de Ruby, JRuby y Rubinius. - 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:
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.
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?
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).