Después de haber escuchado por un buen rato acerca de las ventajas y novedades de Ruby 1.9, creo que ha llegado la hora de probarlo.
Pero, ya tengo instalado Ruby 1.8 ¿recuerdan?
No se preocupen, instalar las dos versiones en el mismo sistema no podría ser más fácil.
Instalación
Vamos a instalar desde el código fuente, ya que la versión que está en los repositorios de Ubuntu no incluye el ejecutable para instalar las gemas, e instalar el paquete gem1.9 puede traernos algunos problemas.
Comienza por instalar las dependencias necesarias para compilar Ruby 1.9 (y Ruby 1.8 en caso de que más adelante quieras instalar Ruby 1.8 desde código fuente):
1
| sudo apt-get build-dep ruby1.8 ruby1.9 |
Descarga el código fuente de la última versión de Ruby 1.9
(al momento de escribir este artículo era la Ruby 1.9.1-p0).
Descomprímelo en alguna carpeta de tu elección, abre una terminal, ve al directorio donde se encuentran los archivos que descomprimiste y teclea lo siguiente:
1
| ./configure --program-suffix=19 |
Para compilarlo e instalarlo teclea la siguiente línea:
1
| make && sudo make install |
Listo, ya tienes Ruby 1.9 instalado en tu sistema… pero como ruby19. Seguramente querras acceder a él usando algo más sencillo, como ruby. Lo que puedes hacer aquí es crear unos enlaces simbólicos (symlinks), por ejemplo:
1
2
3
| sudo ln -fs /usr/local/bin/ruby19 /usr/local/bin/ruby
sudo ln -fs /usr/local/bin/gem19 /usr/local/bin/gem
sudo ln -fs /usr/local/bin/irb19 /usr/local/bin/irb |
Pero hay una forma más fácil.
Cambios de versión en chinga
Simplemente instala un par de alias en tu ~/.profile ~/.bashrc. Yo uso estos:
1
2
| alias ruby-switch-18='sudo ln -fs /usr/bin/ruby1.8 /usr/bin/ruby && sudo ln -fs /usr/bin/irb1.8 /usr/bin/irb && sudo ln -fs /usr/bin/gem1.8 /usr/bin/gem'
alias ruby-switch-19='sudo ln -fs /usr/local/bin/ruby19 /usr/bin/ruby && sudo ln -fs /usr/local/bin/irb19 /usr/bin/irb && sudo ln -fs /usr/local/bin/gem19 /usr/bin/gem' |
Lo cual permite en la terminal, algo como:
1
2
| $ ruby-switch-18 && ruby --version
ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux] |
1
2
| $ ruby-switch-19 && ruby --version
ruby 1.9.1p0 (2009-01-30 revision 21907) [i686-linux] |
Si no quieres reiniciar tu sesión para que los cambios en tu .bashrc entren en vigor, sólo escribe la siguiente línea en tu terminal:
source ~/.bashrc
Eso hará que se evalúe en ese momento el archivo, para que los alias estén disponibles ya.
Por cierto, una cosa más… para no tener problemas con los scripts que traen versiones ejecutables (rails, spec, etc.) instala esta gema en tus dos Rubys:
1
2
3
4
| ruby-switch-18
sudo gem install gem-sane-binary
ruby-switch-19
sudo gem install gem-sane-binary |
Los scripts ejecutables mencionados arriba, incluyen un comentario en su primera línea llamado shebang. Luce así:
1
| #!/usr/local/bin/ruby19 |
Ese comentario indica con qué versión de Ruby debe ejecutarse el script. Y obviamente tendremos problemas porque a veces estaremos usando Ruby 1.8 y otras Ruby 1.9, y lo que queremos es que se use el Ruby que tengamos en ese momento activo.
La gema que acabamos de instalar haŕa que las nuevas gemas que instalemos usen el Ruby que tengamos linkeado en /usr/bin/ruby, y sus comentarios shebang, se verán ahora así:
¡No más dolores de cabeza!
Arreglando rake
Un último ajuste que debemos hacer es editar el archivo rake que instaló Ruby 1.9.
1
| sudo gedit /usr/local/bin/rake |
Y cambiar la línea:
1
| #!/usr/local/bin/ruby19 |
Por esta:
¡Listo, ya tenemos un rake que en vez de utilizar siempre Ruby 1.9, ahora empleará la versión de Ruby que esté activada en nuestro sistema!
Flechas de teclado que funcionan en irb
En las últimas versiones de Ruby 1.9 las flechas funcionan bien, y este procedimiento ya no es necesario.
irb (Interactive Ruby) es una consola donde puedes ingresar código Ruby de manera interactiva. Muy útil para probar pequeños fragmentos de código o hacer experimentos.
Después de instalar Ruby 1.9, me di cuenta de que las flechas del teclado, que normalmente uso para navegar las línea de código (hacia adelante o atrás), o repetir alguna línea anterior (hacia arriba o abajo), no funcionaban adecuadamente.
Esto sucede porque es necesario instalar el soporte de readline. Y vamos a hacer eso precisamente.
Instala las bibliotecas de sistema necesarias para poder compilar el soporte de readline en irb:
1
| sudo apt-get install libreadline5 libreadline5-dev |
Ahora necesitas compilar la interfaz de readline basada en Ruby, para tener disponible la biblioteca de readline en irb. En tu terminal ve al directorio donde descomprimiste el código fuente de Ruby 1.9 y haz lo siguiente:
1
2
3
4
| cd ruby-1.9.1-p0/ext/readline
sudo ruby extconf.rb
make
sudo make install |
¡Eso es todo!
Prueba las flechas del teclado dentro de irb, deben funcionar sin problema ahora.
Recursos
Installing Ruby 1.8 and 1.9 Side by Side
Multiple Versions of Ruby on Ubuntu #3
How to make arrow keys working in irb in Linux/Ubuntu
Artículos relacionados:
Comentarios recientes