#200 Rails 3 Beta and RVM
¿Qué mejor manera de celebrar el episodio 200 que con una introducción a Rails 3? La primera versión beta de Rails 3.0 acaba de ser liberada y en este episodio veremos cómo instalarlo. A lo largo de los próximos episodios cubriremos con más detalle algunas de sus nuevas funcionalidades. Merece la pena instalar esta beta para ir haciéndonos una idea de los cambios aunque no pensemos de momento actualizar nuestras aplicaciones e ir jugando con las nuevas funcionalidades.
Actualización de Ruby
Rails 3 necesita Ruby 1.8.7 (o posterior) para funcionar, por tanto lo primero que tenemos que hacer es averiguar qué version tenemos ejecutando ruby -v
en una ventana de terminal.
$ ruby -v ruby 1.8.6 (2008-08-11 patchlevel 287) [universal-darwin9.0]
En esta máquina tenemos Ruby 1.8.6, así que tendremos que actualizar Ruby antes de seguir. Podríamos hacerlo manualmente pero en su lugar vamos a utilizar rvm (Ruby Version Manager), que nos va a permitir instalar fácilmente diferentes versiones de Ruby y conmutar entre ellas con un único comando.
En Windows rvm no está disponible por lo que tendremos que instalar Ruby manualmente. En Linux, OS X o cualquier otro sistema operativo basado en UNIX podemos instalar rvm siguiendo las instrucciones de la página de instalación y ejecutando el siguiente comando:
mkdir -p ~/.rvm/src/ && cd ~/.rvm/src && rm -rf ./rvm/ && git clone git://github.com/wayneeseguin/rvm.git && cd rvm && ./install
Después que este comando haya terminado su ejecución se nos mostrarán las instrucciones necesarias para finalizar la instalación, que serán diferentes según estemos usando bash o zsh. Tras efectuar los cambios pertinentes que nos hayan sugerido tendremos que cerrar y volver a abrir el terminal. Después ya podremos ejecutar el comando rvm
para instalar instalar cualquier versión de Ruby que deseemos.
Rails 3.0 necesita Ruby 1.8.7 pero también funciona como la versión 1.9.1 y como hoy nos sentimos aventureros instalaremos esa versión. Para ello, ejecutamos:
$ rvm install 1.9.1
Este comando descagará, configurará e instalará Ruby 1.9.1, lo que le llevará unos cuantos minutos y nos calentará el regazo si estamos en nuestro portátil. Cuando termine podremos ejecutar rvm list
para ver qué versiones de Ruby tenemos instaladas.
noonoo:~ eifion$ rvm list ruby-1.9.1-p378 [ x86_64 ] system [ x86_64 i386 ppc ]
Dado que ahora tenemos Ruby 1.9.1 como versión instalada podemos cambiar a ella haciendo que sea la versión activa.
$ rvm 1.9.1 $ ruby -v ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-darwin10.2.0]
Esta nueva versión de Ruby sólo estará activa durante el tiempo que tengamos abierta esta sesión de terminal, si la cerramos y volvemos a abrir estaremos otra vez con la versión de Ruby por defecto. Para que la nueva versión permanezca entre sesiones podemos pasar el parámetro --default
a rvm
.
$ rvm 1.9.1 --default $ ruby -v ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-darwin10.2.0]
Ahora podemos abrir tantas terminales como queramos y la 1.9.1 será siempre la versión por defecto.
Si en cualquier momento queremos volver a la versión del sistema por defecto podemos ejecutar rvm system
, pasándole
--default
si queremos que la vuelta a la versión por defecto de Ruby sea permanente.
Instalación de la versión Beta de Rails
Una vez que tenemos una versión soportada de Ruby podemos pasar a instalar la beta de Rails 3. Para ello tenemos que ejecutar estas dos líneas en la consola.
gem install tzinfo builder memcache-client rack rack-test rack-mount erubis mail text-format thor bundler i18n gem install rails --pre
Tendremos que instalar por separado todos los prerequistos (eso es lo que hace la primera línea) porque estamos instalando una versión de pre-lanzamiento de Rails. Obsérvese que no estamos usando sudo
con el comando gem
porque con rvm no nos interesa. La página sobre gemas en el sitio de rvm detalla más información al respecto.
Una vez que hayan terminado ambos comandos tendremos Rails 3.0 instalado y podemos empezar a hacer nuestras pruebas.
Uso de Rails 3.0
Primero tenemos que asegurarnos de que Rails 3 está instalado correctamente ejecutando el comando rails -v
.
$ rails -v Rails 3.0.0.beta
Si vemos un error al ejecutar el comando anterior deberíamos cerrar y abrir nuestra ventana de terminal y probar el comando otra
vez. Tras asegurarnos de que estamos utilizando Rails 3.0 podemos crear nuestra primera aplicación. Será una aplicación muy sencilla que guardará récords de puntuaciones en juegos, la bautizaremos topscore
. En Rails 3 las aplicaciones se crean como de costumbre:
rails topscore
Pero cuando nos cambiemos al directorio de la aplicación e intentemos ejecutar el servidor ya notaremos la primera diferencia.
$ script/server -bash: script/server: No such file or directory
Ya no existe ninguno de los comandos del directorio script
así que, ¿cómo arrancamos el servidor? La respuesta es que accedemos a ellos a través del comando rails
de la siguiente manera:
rails server
No obstante cuando ejecutemos esto nos encontraremos con un aparatoso mensaje de error (es este el tipo de piedrecitas en el camino que caben esperar con una versión beta) Si miramos el mensaje de error veremos que hay uno que hace mención a que falta la gema sqlite3-ruby
. Este error parece equívico, dado que ya tenemos esta gema instalada en nuestra máquina, pero hay que tener en cuenta que cada versión de Ruby que instalemos a través de rvm tiene su propio juego de gemas, así que cualquier gema adicional tendrá que ser instalada nuevamente. Por tanto tendremos que reinstalar la gemasqlite3-ruby
para Ruby 1.9.1, nuevamente teniendo cuidadode no poner delante sudo
.
gem install sqlite3-ruby
Esta vez cuando ejecutemos rails server
veremos una gran cantidad de texto y algunas advertencias, pero el servidor arrancará. Si visitamos http://localhost:3000 con un navegador veremos la página por defecto de Rails.
Ya podemos empezar a construir nuestra aplicación. Comenzaremos generando el andamiaje de un modelo Game
que tendrá un atributo llamado name
de tipo cadena.
rails generate scaffold game name:string
Nuevamente veremos un montón de información cuando lo ejecutemos, pero el comando funcionará. A continuación migraremos la base de datos.
rake db:migrate
Si luego visitamos la página de juegos veremos las familiares vistas automáticamente generadas por el generador de scaffold que tantas veces hemos visto.
No iremos más lejos con esta aplicación: en próximos episodios cubriremos las nuevas funcionalidades de Rails 3 pero mientras tanto merece la pena leer las Notas de lanzamiento de Rails 3.0 para tener una visión general de lo que ha cambiado. También hay una exhaustiva colección de enlaces sobre Rails 3 en Ruby Inside.
Existe la posibilidad, dado que trabajaremos con software beta, que las cosas no funcionen correctamente y nos topemos con bugs u otros problemas. En tal caso si nos encontramos con un error que sabemos que no está relacionado con nuestro código lo primero que debemos hacer es comprobar qué gemas o plugins está usando nuestra aplicación. Existe la posibilidad de que ahí esté el origen del problema porque aún no hayan sido actualizadas para funcionar con Rails 3 o Ruby 1.9 Si rastreamos el origen del problema hasta una gema o plugin específico deberíamos añadir una petición de soporte en la página del proyecto correspondiente de forma que quede constancia para su resolución.
Si sabemos que el problema se encuentra en Rails podemos enviar un informe de error en Rails Lighthouse. Si decidimos enviar dicho informe conviene teneren cuenta los siguientes consejos. En primer lugar deberíamos buscar en los informes existentes para asegurarnos de que no estamos duplicando peticiones de soporte. Cuando escribamos nuestro informe de error debemos incluir instrucciones sobre cómo reproducir el error así como todos los mensajes de error con su volcado de pila. Finalmente, se debe incluir la versión exacta de Ruby on Rails que estemos usando así como los plugins y gemas que estemos usando de forma que sea fácil reproducir el problema. Si enviamos informes de calidad los errores descritos serán más fáciles de resolver.
Devolver al código abierto
Como ya sabrán este es el episodio 200 y para celebrar el Railscast bicentenario Ryan Bates ha lanzado una campaña llamada “Devuelve al Código Abierto”. Se dedica mucho esfuerzo en software open source que posteriormente se pone a disposicón de cualquiera que lo quiera usar, por lo que tiene sentido devolver algo cuando nos sea posible. El reto de Ryan es abrir la aplicación Rails más grande que tengamos y examinar los diversos plugins y gemas que usemos. Si vemos la página de estos proyectos veremos que muchos de ellos aceptan donaciones, agradeciéndose incluso pequeñas contribuciones para que dicho proyecto continúe su desarrollo.
Alternativamente, podemos echar un vistazo a la lista de problemas del proyecto y ayudar a corregirlo o echar una mano con la documentación. A nosotros nos corresponde decidir cómo queremos contribuir, pero lo importante es que hagamos algo porque esto es lo que da pujanza a la comunidad Rails.