El ecosistema de las aplicaciones Ruby on Rails es bastante extenso, y puede generar problemas a la hora de mover la aplicación al servidor de producción o al actualizar el servidor. Rails ofrece una posibilidad: congelar la versión de una aplicación.
La base es muy simple: en una aplicación Rails, se usará la versión definida en RAILS_GEM_VERSION en config/environment.rb... salvo en el caso de que en el directorio /vendor de la aplicación exista un directorio /vendor/rails con el código del framework, en cuyo caso se usará este. Así, da igual la versión de Rails que exista en el servidor, la aplicación usará la versión incluida en su directorio /vendor.
¿Cómo congelamos la versión?
Existe una forma sencilla y oficial de congelar la versión de una aplicación, por ejemplo, para congelar la aplicación mi-aplicacion-rails en la versión 2.0.2:
$ cd /var/www/sites/mi-aplicacion-rails $ rake rails:freeze:edge RELEASE=2.0.2
Esta tarea rake automáticamente conecta con el servidor SVN de Ruby on Rails, descarga la versión indicada, la descomprime y la copia en el directorio /vendor/rails.
También nos podríamos haber limitado a sincronizar la aplicación con la versión actualmente instalada en la máquina:
$ rake rails:freeze:gems
Este comando es muy cómodo, pero al usarlo con versiones antiguas falla, ya que dichas versiones no están en el repositorio SVN actual. En estos casos, podemos hacer de forma manual la misma tarea que realiza rake:
$ cp /tmp $ wget http://rubyforge.org/frs/download.php/29361/rails-2.0.2.zip $ unzip rails-2.0.2.zip $ cp -r rails/vendor/rails/* /var/www/sites/mi-aplicacion-rails/vendor/ $ sudo chown -R www-data:www-data /var/www/sites/mi-aplicacion-rails/vendor/rails $ sudo /etc/init.d/apache2 restart
Simplemente, descargamos la versión que nos interese (listado de paquetes de versiones antiguas), lo descomprimimos y copiamos al directorio correspondiente de la aplicación Rails, ajustamos permisos y reiniciamos Apache para que recargue la aplicación.
Esta web
http://alvaroremesal.net
, su contenido, texto e imágenes está licenciado bajo una
Licencia Creative Commons Reconocimiento-Compartir bajo la misma licencia 3.0 España.