Primeros pasos con Ruby on Rails

Seguramente habrás oído hablar de Ruby on Rails, la nueva forma superproductiva de desarrollar aplicaciones web, y te gustaría probarla, pero no tienes ni idea de Ruby o de Rails. Este artículo te guiará paso a paso a través del desarrollo de una aplicación usando Rails. No tratará de enseñarte a programar en Ruby, pero si ya conoces algún lenguaje de programación orientada a objetos no deberías tener ningún problema para seguirlo (al final encontrarás enlaces para aprender más de Ruby)
Pero primero vamos a responder algunas cuestiones candentes antes de remangarnos y ponernos a construir una aplicación web.
¿Qué es Ruby?
Ruby es un lenguaje orientado a objetos puro, con una sintaxis super limpia que hace que programar sea elegante y divertido. En Ruby se combinan con éxito la elegancia conceptual del Smalltalk, la facilidad de uso y aprendizaje de Python y el pragmatismo de Perl. Ruby fue creado en Japon a principios de los 90, pero ha empezado a popularizarse en todo el mundo en los últimos años según han ido apareciendo más libros y documentación en inglés
¿Qué es Rails?
Rails es un framework de código abierto para Ruby que sirve para desarrollar aplicaciones web que acceden a bases de datos. ¿Qué tiene esto de especial? Hay docenas de frameworks por ahí, y la mayoría existen desde hace más tiempo que Rails. ¿Por qué molestarse en aprender otro framework una vez más?
Bien, ¿qué dirías si te contase que puedes desarrollar un aplicación web al menos diez veces más deprisa con Rails que lo que tardarías con un framework típico en Java? Y puedes hacerlo sin sacrificar la calidad de tu aplicación. ¿Cómo es posible?
Parte de la respuesta está en el lenguaje de programación Ruby. Hay muchas cosas que son sencillas de hacer en Ruby pero que ni tan siquiera pueden hacerse en otros lenguajes, y Rails saca partido de esto. El resto de la respuesta reside en los dos principios en que se basa Rails: menos software y convención sobre configuración
Menos software quiere decir que se escriben menos lineas de código para implementar la aplicación. Si el código es pequeño quiere decir que el desarrollo es más rápido y con menos errores, lo que hará que el código sea fácil de entender, mantener y mejorar. En breve veremos cómo Rails pone nuestro código a dieta.
Convención sobre configuración significa que le decimos adiós a esos prolijos ficheros de configuración en XML. ¡En Rails, simplemente, no existen! En lugar de archivos de configuración, una aplicación Rails utiliza una serie de convenciones simples que le permiten avergiuarlo todo mediante reflexión y descubrimiento. El código de tu aplicación y la base de datos que tienes ¡ya contienen todo lo que Rails necesita saber!
Ver es creer
A menudo oímos, como desarrolladores, las exageraciones que se dicen de los productos nuevos. Lo sé, puedo imaginarme esa mirada escéptica que has puesto cuando has leido mis atrevidas afirmaciones. Sí, claro, diez veces más deprisa… ¡seguro!
No pretendo que aceptes esto con la fé del carbonero: te mostraré como comprobarlo por tí mismo. Primero instalaremos el software necesario, y luego continuaremos con el desarrollo de una aplicación web.
Instalación del Software
Vamos a desarrollar esta aplicación web sobre Windows. También puedes seguir el tutorial si usas un sistema Linux o Mac, pero la pantalla será algo diferente de las capturas que se muestran a continuación. Además, tendrás que instalar paquetes desarrollados específicamente para tu sistema. Mira en el apartado Recursos al final de este artículo donde se encuentran enlaces de interés.
Para desarrollar esta aplicación web, necesitamos instalar lo siguiente:
Ruby
El framework Rails
La base de datos MySQL (y el cliente gráfico MySQL-front)
Paso 1: Instalación de Ruby

Figura 1. Programa de instalación de Ruby para Windows
La instalación de Ruby no puede ser más simple:
Desacarga el último paquete instalador de Ruby para Windows (se muestra en la figura 1). En el momento de escribir este artículo, la última versión es ruby184-16.exe).
Haz doble clic en el ejecutable que has descargado y sigue las instrucciones del instalador. A no ser que tengas requisitos especiales, simplemente pulsa Enter para aceptar todas las opciones por defecto.
Nota para usuarios de Linux y OS X: El instalador de Windows viene con el gestor de paquetes RubyGems ya instalado. Probablemente te haga falta instalarte RubyGems aparte.
Paso 2: Instalar Rails

Figura 2. Instalación de Rails con RubyGems
A continuación podemos usar el gestor de paquetes RubyGems para descargar e instalar la última versión de Rails, como se muestra en la figura 2:
Abre una ventana de terminal y ejecuta el comando gem install rails –remote.
RubyGems instalará además todas las librerías de las que depende Rails. Para cada una de ellas, RubyGems preguntará si quieres instalarla. Responde “y” (yes) a todas.
Paso 3: Instalar MySQL

Figura 3. El asistente de instalación del servidor MySQL.
Nos sigue haciendo falta instalar nuestro servidor de bases de datos. Rails soporta muchas bases de datos distintas, pero nosotros usaremos MySQL.
Descarga la última versión «esencial» del instalador de MySQL para Windows (a día de hoy, la 5.0.18-win32)
Haz doble clic en el instalador (figura 3) y acepta todos los valores por defecto para la instalación típica. Puedes saltarte el paso de registrar una cuenta de usuario en mysql.com.
Cuando llegues al último panel del instalador, al pulsar en el botón Finish aparecerá el asistente de configuración.
En el asistente de configuración también puedes aceptar todos los valores por defecto (standard configuration), excepto en el panel de seguridad (figura 4), porque a partir de la versión 4.1.7 MySQL utiliza un nuevo algoritmo de autenticación que no es compatible con clientes anteriores, incluyendo la versión actual de rails. Dejando esta opción sin rellenar, podemos acceder a MySQL sin emplear una clave. [N. del T: Las versión de Rails que hemos instalado, al ser mucho más reciente que la que Curt está empleando en su tutorial, ya es capaz de conectar con MySQL usando la nueva encriptación, de forma que podemos introducir aquí una clave de administración sin problemas. Nosotros usaremos root/rolling como nombre y clave de administración] Paso 4: Instalación de MySQL-Front
MySQL-Front es una interfaz gráfica para la base de datos MySQL. Es una aplicación comercial de precio económico pero puedes evaluarla gratuitamente durante 30 días. En este artículo la usaremos para crear nuestra base de datos. Por supuesto, y si lo prefieres, puedes enviar comandos SQL a la base de datos usando la consola de MySQL.
Descarga la última versión de MySQL-Front (versión 3.2, build 11.2)
Haz doble clic en el ejecutable de instalación y sigue las instrucciones de instalación (figura 5) Puedes aceptar todos los valores por defecto.

Figure 5. Instalador de MySQL-Front
Vamos a escribir código
Crearemos un libro de recetas online para poder guardar y compartir las recetas favoritas de todos nosotros. Queremos que nuestro libro de recetas haga lo siguiente:
Mostrar una lista de todas las recetas.
Crear nuevas recetas y editar las ya existentes.
Asignar una receta a una categoría (por ejemplo «postre» o «sopa»).
Puedes crear tu aplicación en el directorio que quieras, nosotros hemos usado c:\rails\recetario. Todos los nombres de directorio y paths que aparecen en este artículo asumen que la aplicación se ha instalado ahí. Si escoges instalarlo todo en otro directorio, ten en cuenta que debes hacer los ajustes necesarios cuando veas directorios de aplicación en el artículo.
También puedes descargar el código del ejemplo completo y seguirlo con nosotros. Si lo haces, busca en el directorio cookbook/db/ un archivo que puedes usar para reconstruir la base de datos. [N. del T: Si te descargas el código de la aplicación del sitio de OnLamp, ten en cuenta que el código y los esquemas de la base de datos estarán en inglés. Te recomiendo que sigas el artículo paso a paso.] Creación de una aplicación Rails vacía
Rails es un framework de aplicaciones web que funciona en tiempo de ejecución pero además es una serie de scripts de ayuda que automatizan muchas de las tareas que hay que hacer cuando se desarrolla una aplicación web. En este paso, vamos a usar uno de estos scripts para crear toda la estructura de directorios y el conjunto inicial de ficheros para comenzar con nuestra aplicación de recetas.
Abre una ventana de terminal y navega hasta donde quieres que resida tu aplicación. Nosotros hemos usado c:\rails.
Ejecuta el comando:
rails recetario
Se creará un directorio recetario que contiene todo el árbol de carpetas y archivos que conforman una aplicación Rails vacía.

Figura 6. Una aplicación Rails recién creada
Cómo probar la aplicación web vacía
Una aplicación Rails puede ser desplegada prácticamente en cualquier servidor web, pero durante el desarrollo de la aplicación lo más conveniente es usar el servidor WEBrick, que viene incorporado en Rails. Vamos a arrancar este servidor web y vamos a visitar nuestra aplicación.
En la ventana de comandos que ya tienes abierta ve hasta el directorio del recetario.
Ejecuta el siguiente comando:
ruby script\server
para arrancar el servidor (figura 7)
Ahora abre tu navegador favorito y visita http://127.0.0.1:3000/. Deberías ver algo parecido a la Figura 8. [Nota del Editor: si no estás siguiendo paso a paso este artículo, estos enlaces probablemente no funcionarán. 127.0.0.1 es una dirección especial reservada para la máquina local]

Figura 7. Arranque del servidor WEBrick
No cierres la ventana del intérprete de comandos que contiene al servidor web ejecutándose, pues lo vamos a utilizar según vayamos avanzado

Figura 8. La página por defecto de Rails
Estructura de directorios de una aplicación Rails
Rail trata por todos los medios de minimizar el número de decisiones que tienes que tomar así como de eliminar el trabajo innecesario. Cuando usaste el script de ayuda rails para crear el esqueleto de la aplicación, Rails creó toda la estructura de directorios de la figura 9. Rails sabe dónde encontrar todo lo que necesita dentro de esta estructura de forma que luego no tengas que decírselo. Recuerda, ¡no hay archivos de configuración por ningún sitio!

Figura 9. Árbol de directorios de una aplicación Rails
El grueso de nuestro trabajo como desarrolladores consistirá en crear y editar archivos en los subdirectorios de c:\rails\recetario\app.
controllers es donde Rails espera encontrar las clases de nuestros controladores. La misión del controlador es manejar una petición web recibida desde el navegador, es decir, del usuario.
views contiene las plantillas de visualización que se rellenarán con datos de nuestra aplicación, serán convertidas a HTML y devueltas al navegador del usuario.
models contiene las clases que modelan los datos almacenados en la base de datos de nuestra aplicación. En la mayoría de los frameworks esta parte de la aplicación puede acabar bastante embrollada, prolija, tediosa… ¡pero Rails lo hace todo tremendamente simple!
Por último, en helpers se guardan las clases de ayuda que se usan para asistir a las clases de modelos, vistas y controladores. Esto ayuda a que dichas clases se mantengan sin crecer de tamaño, dedicadas y ordenadas.
URLs y controladores
Dentro de un momento crearemos nuestra base de datos y empezaremos a desarrollar nuestra aplicación. En primer lugar, es importante entender cómo funcionan los controladores en Rails y cómo se mapean las URLs a métodos de los controladores.
Las clases de los controladores gestionan las peticiones web del usuario. La URL de la petición se mapea a una clase controlador y un método de esa clase. ¿Cómo funciona todo esto?
Deja abierta la ventana de comandos con el servidor web ejecutándose. Abre una segunda ventana de comandos y colocate en el directorio base de la aplicación c:\rails\recetario. Tendrá el aspecto de la figura 10 dentro de un momento.

Figura 10. El directorio del controlador del libro de recetas
Vamos a usar otro script de ayuda de Rails para crearnos una nueva clase controladora. En la ventana de terminal, ejecuta el comando:
ruby script\generate controller MiPrueba
Se creará un archivo llamado mi_prueba_controller.rb que contendrá el esqueleto de una clase MiPruebaController.
En el directorio c:\rails\recetario\controllers haz clic con el botón derecho del ratón y edita este archivo. Debería tener el aspecto de la figura 11.

Figura 11. Editando MiPruebaController
¿Y qué es lo que pasa cuando uno visita algo que sabemos que no existe? Compruébalo: http://127.0.0.1:3000/basura/ La Figura 12 muestra el resultado

Figura 12. Visitando un controlador desconocido
No es muy sorprendente. Ahora intenta abrir http://127.0.0.1:3000/Mi_Prueba/ , que se muestra en la figura 13.

Figure 13. Visitando el nuevo controlador
Vaya, esto es otra cosa. La parte de la URL Mi_Prueba se mapea al nuevo controlador recién creado. Pero esta vez parece como si Rails hubiera tratado sin éxito de localizar una acción llamada index.
Vamos a arreglarlo. Añade un método index a la clase del controlador, como en la Figura 14.

Figura 14. El método index de MiPruebaController
Refresca la vista del navegador, y deberíamos ver algo más parecido a la figura 15.

Figure 15. Resultado del método index
También obtendremos el mismo resultado abriendo http://127.0.0.1:3000/Mi_Prueba/index
Ahora añadamos otra acción al controlador: el método dilbert de la Figura 16.

Figura 16. El método dilbert
Visitemos http://127.0.0.1:3000/Mi_Prueba/dilbert y veremos algo como lo que se muestra en la Figura 17.

Figura 17. Resultado del método dilbert
Creo que se capta la idea. Ahora crearemos nuestra base de datos y añadiremos código real a nuestra aplicación de libro de recetas..
Creación de la Base de Datos del Libro de Recetas
Ha llegado el momento de crear la base de datos de nuestro libro de recetas y decirle a Rails cómo acceder a ella. (Esta es la única configuración que vas a encontrar en Rails)
Arranca MySQL-Front y regístrarte en tu instanacia local de MySQL (localhost) como root utilizando la clave rolling (si es que optaste por introducir una clave en el asistente de configuración de MySQL durante la instalación). Para ello deberás definir una nueva sesión y abrirla, tras lo cual deberías ver algo parecido a la figura 18.

Figura 18. MySQL-Front
Hay dos bases de datos ya existentes, mysql and test. Crea una nueva base de datos, llamada recetario. Ejecuta el comando de menú Database>New>Database… e introduce el nombre de la base de datos recetario, como se muestra en la figura 19.

Figura 19. Creación de una nueva base de datos
Haz clic en Ok para crear la base de datos.
Para decirle a Rails cómo encontrar la base de datos, edita el fichero c:\rails\recetario\config\database.yml y cambia el nombre de la base de datos a recetario. Deja el nombre de usuario como root y en la clave rolling (o lo que corresponda). Cuando acabes, debería tener el aspecto de la figura 20. [N del T: en la última versión de Rails, este fichero tiene muchos comentarios con ejemplos de configuración para distintos conectores de bases de datos]

Figura 20. El fichero de configuración database.yml
Con Rails podemos ejecutar la aplicación en modo de desarrollo, de pruebas o de producción, empleando bases de datos diferentes para cada uno. En nuestra aplicación, por simplicidad, utilizaremos siempre la misma.
Nota del editor: En las últimas versiones de Rails, si se edita este archivo es necesario reiniciar el servidor web o Rails nunca verá la nueva base de datos y los pasos siguientes fallarán. Pulsa Ctrl-C o cierra la ventana y vuelve a lanzar el servidor web.
Creación de la tabla recetas
Nuestro libro de recetas contendrá recetas, así que vamos a crear una tabla en nuestra base de datos para almacenarlas.
En el panel de la izquierda de MySQL-Front, haz clic con el botón derecho en la base de datos del recetario y escoge New>Table… del menú emergente (Figura 21)

Figura 21. Creación de una nueva tabla
Asigna a la tabla el nombre recetas (Figura 22).

, ,
Entrada anterior
Safari Omnibar
Entrada siguiente
Juegos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Rellena este campo
Rellena este campo
Por favor, introduce una dirección de correo electrónico válida.
Necesita estar de acuerdo con los términos para continuar

Menú