Yo soy uno de esos que siempre llega tarde con las tendencias (y como “para muestra un botón”, ver las fechas de aquí y aquí).
Desde hace ya-no-se-cuanto-tiempo he seguido la noticia que rodea a Ruby on Rails, y por esa misma cantidad de tiempo lo he evitado. No porque nunca creí que fuera bueno, si no porque nunca tuve la necesidad de cambiar a mi querido PHP. A ver si me explico…
Mi Historia

Como muchos desarrolladores, con la ayuda de un amigo me inventé mis propias librerías en PHP que me facilitaran la vida. Obviamente estaban hechas a mi medida y con millones de hacks y parches que sólo yo conocía, y las utilizaba para cualquier proyecto freelance que me saliera.
Luego entré a trabajar para otros. Obviamente ahí mis librerías no iban a funcionar, así que empecé a investigar más a fondo las bondades de Rails y cómo llevarlas a PHP. Me familiaricé entonces con el modelo MVC (el cual ya venía escuchando desde que investigué sobre Struts cuando trabajaba con Java) y me pareció una maravilla, pero aún me empeñaba en hacerlo en PHP. Encontré CakePHP, Symphony, Prado, QCodo y finalmente seguí con atención la evolución del Zend Framework desde su primer beta, cuyo objetivo primordial era llevar la filosofía de Rails a PHP. Ninguno me terminó de convencer, había algo en PHP que no lo hacía como la gente decía que era Rails. Sin embargo, no es el objetivo de este artículo comparar estos frameworks y es suficiente con decir que los probé casi todos y llegué a utilizar a fondo el Zend Framework.
He leído innumerable cantidad de veces debates sobre si este o aquél lenguaje de programación es mejor, si este o aquél framework es mejor, si este o aquél IDE es mejor. La verdad es que es irrelevante, como buen desarrollador uno debe saber hasta dónde arroparse con una tecnología. Existe un principio primordial en el desarrollo web, el cuál siempre he tenido en cuenta: hay que utilizar la herramienta adecuada para cada situación. Java es perfecto para cuando se necesite que una aplicación sea robusta, estable, confiable, etc., pero es un dolor de trasero desarrollar con él. PHP es versátil y se adapta a muchas situaciones, escala bien y es fácil de aprender. Y así podemos ir con ASP.Net, Python, Perl, Ruby, etc. Lo cierto es que no se trata de cuál tecnología es mejor, se trata de cual se adapta mejor a mi proyecto particular.
Hoy en día trabajo con varios desarrolladores en una empresa propia, con mayor libertad tecnológica pero con mayor presión en tiempos de respuesta a los clientes, y estamos frente a un proyecto de desarrollo de un sistema para una empresa. La necesidad de un framework versátil, poderoso y sencillo, es evidente. No nos preocupa mucho la escalabilidad, porque va a tener un número de usuarios limitados que nunca va a ser muy grande. Lo que nos preocupa es la simplicidad, las facilidad para debuggear y la posibilidad de hacer mucho en poco tiempo. Después de todo aquí el tiempo es dinero.
Finalmente es hora de darle a Ruby on Rails (RoR) esa oportunidad que se merece. RoR se vende como todo lo que necesito: versatilidad, simplicidad, hacer mucho en poco tiempo. Así que desempolvé los libros, los viejos links, y es hora de montarme en estos rieles.
A partir de este momento voy a hacer una serie de artículos documentando los pasos que he seguido para pasar de completo novato a, con suerte y esfuerzo, un experto en el asunto. Vamos a ver cómo me va con todo esto.
Día 1
- He empezado por dónde se debe empezar: en la página oficial de RoR. Vi los screencasts y leí sobre los próximos pasos a seguir, como instalar, qué leer, qué usar.
- De ahí pues, siguiendo las sugerencias, descargué InstantRails ya que estoy en Windows. Ahora, una nota aquí: he descargado la versión 1.7, que trae Rails v1.2.3. ¿Por qué si ya salió Rails v2.0.1? Sencillo: la mayor parte de la documentación, entiéndase por esto libros, tutoriales en internet, etc… están hechos para Rails 1.2. Rails 2.0 tiene un mes de antigüedad, y creo que lo más sano es empezar con algo que esté bien documentado.
- InstantRails instalado sin problemas. Sólo descomprimí la carpetica a una ruta sin espacios, corrí el .exe y creé un proyecto nuevo en el menú de “Rails Applications” > “Manage Rails Applications”, y al aparecer la cónsola de Rails ejecuté el comando “rails nombre_proyecto”. Inicié el servicio con Mongrel, y listo! Apunté Firefox a http://localhost:3000 y tenía mi primera applicación corriendo sin problemas.
- Ahora toca elegir un editor o un IDE. Tengo dos opciones identificadas: Radrails, basado en el monstruo que es Eclipse, o eTextEditor, un clon de TextMate. Ya he usado antes Eclipse y Aptana, no dudo que sea un excelente IDE para desarrollar, sin embargo me voy a quedar por ahora con eTextEditor. He escuchado maravillas de Textmate, así que lo más sano es buscar su parecido en Windows y mantener la filosofía de simplicidad que estos predican. Ya estoy un poco cansado de los IDE grandes, y quiero algo distinto y que me recuerde a Notepad++, el cual me gustó muchisimo una vez que lo utilicé cuando trabajaba con Zend Framework.
- Aja, ¿y ahora?. Me debatí entre si seguir alguno de los múltiples tutoriales online que tengo como referencia, o leer el famoso libro “Agile Web Development with Rails: Second Edition“. Como en la página de Rails lo recomiendan, prefiero irme por ésta última opción así que… ¡a leer!
- Leí hasta la página 43. Hasta ahora excelente. Me familiaricé con el modelo MVC, con Ruby como lenguaje, con el Active Record y el Action Pack del framework, con la linea de comando de Rails (ES UNA MARAVILLA!) y una explicación detallada de como instalar y configurar Rails con la base de datos de mi elección. ¡Dejo para mañana empezar con mi primera aplicación!
Hoy quedé maravillado con la línea de comandos. Estoy familiarizado con los ambientes Unix, con Linux en particular, y que con un solo comando puedas crear toda la estructura de un proyecto Rails, con otro comando actualices las versiones (a lo apt-get de Debian/Ubuntu/otros Linux), con otro comando iniciar un servidor WEBrick y con otro generar la estructura de las vistas/controladores… no tiene precio. Muy rápido todo realmente. Además, puedes debuggear una aplicación siguiendo los logs en tiempo real en la cónsola. No más “echo($sql)” ni “print_r($array)” de PHP. Thank God!
Poco a poco voy a ir siguiendo el libro, que hasta ahora me ha gustado su manera de explicar las cosas. El próximo artículo de esta serie hablará sobre mi primera aplicación.
Keep Riding the Rails!
Actualización:
Lista de editores (en el wiki oficial): http://wiki.rubyonrails.com/rails/pages/Editors