Hace poco que he empezado a evolucionar una aplicación escrita hace más de un año usando ruby on rails.
La aplicación funciona sin problemas en Ubuntu Karmic (en concreto, esta imagen de amazon) con la última versión de ruby disponible mediante apt-get
.
El problema
El problema es que en mi máquina local la cosa no iba tan bien. El motivo es una diferencia en el patchlevel de las versiones:
ruby ruby 1.8.7 (2009-06-12 patchlevel 174) [i486-linux]
ruby ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-darwin9]
Yo uso MacPorts:http://www.macports.org/ para instalar ruby en mi mac y, aunque hay varias versiones de ruby disponibles, sólo está patchlevel más reciente.
La solución
Como siempre, google trae la respuesta. Joe Homs cuenta como crear una fuente local para MacPorts que contenga la versión anterior que queramos.
No es complicado:
- Crea una carpeta para la fuente local.
mkdir /opt/macports-local-repo
- Localiza en el svn de MacPorts la revisión correspondiente a la versión de ruby que necesitas. En mi caso, era @62943
- Descarga la revisón a tu repositorio
cd /opt/macports-local-repo/
svn co http://svn.macports.org/repository/macports/trunk\
/dports/lang/ruby@62943 lang/ruby
- Informa a MacPorts de que hay una nueva fuente. Para eso, modifica
/opt/local/etc/macports/sources.conf
y añade una línea con el protocolofile://
. En mi caso:
file:///opt/macports-local-repo/
rsync://rsync.macports.org/release/ports/ [default]
- Actualiza el índice de MacPorts
sudo portindex /opt/macports-local-repo/
- Comprueba que todo ha ido bien
port search --exact ruby ruby @1.8.7-p174 (lang, ruby) Powerful and clean object-oriented scripting language
ruby @1.8.7-p249 (lang, ruby) Powerful and clean object-oriented scripting language
Found 2 ports.
- ¡Y a instalar!
sudo port install ruby @1.8.7-p174
Bonus
MacPorts permite activar y desactivar versiones, así que no hay problema en tener unas cuantas versiones instaladas, dependiendo del proyecto:
sudo port installed ruby
The following ports are currently installed:
ruby @1.8.7-p72_2+thread_hooks
ruby @1.8.7-p174_2+darwin+thread_hooks (active)
ruby @1.8.7-p249_0+darwin+thread_hooks
Y para cambiar de una versión a otra…
sudo port activate ruby @1.8.7-p249*
---> Deactivating ruby @1.8.7-p174_2+darwin+thread_hooks
---> Activating ruby @1.8.7-p249*
AbelBook:~ amuino$ sudo port installed ruby
The following ports are currently installed:
ruby @1.8.7-p72_2+thread_hooks
ruby @1.8.7-p174_2+darwin+thread_hooks
ruby @1.8.7-p249_0+darwin+thread_hooks (active)