Ha pasado mucho tiempo desde el último post, lo sé, y tiene un porqué: acabo de dar el salto a Ruby on Rails.
¿Cómo? ¿Y porqué? Si justamente ahora empezaba a ser senior en PHP!
Habéis probado Ruby? Habéis jugado con lo que permite este lenguaje de objetos?
Ya desde que Bruno, un amigo motero y programador, me convenciese para que le echara un vistazo me gustó, pero claro, es “un lenguaje nuevo” y “aún le falta mucho” y “no tengo tiempo para jugar”. Luego conocí a los creadores de moterus.es, red social al estilo facebook pero enfocada a moteros, escrita también en Ruby on Rails. Salimos varias veces en moto y en las paradas… bueno… somos unos frikis y nos gusta programar, hablamos y hablamos hasta que un día de principios de agosto me hicieron una propuesta formal: asumiendo que empezaba de cero con Rails, me querían en el equipo.
Yo estaba en plena fase de salida de producción del nuevo front y back de Privalia. Como buen profesional debía quedarme hasta el final así que la entrada la haría a principios de setiembre. Me tiré todo el agosto haciendo más horas que un reloj en Privalia y en los pocos ratos libres que me quedaron estuve estudiando Ruby on Rails. Con la coña casi no he tenido vacaciones pero ha valido la pena. Ya estoy metido de lleno.
Éste ha sido el motivo de mi larga ausencia. Con ello he caído de los rankings y Syntax Error a vuelto a ser un blog del montón (si es que nunca a pasado de aquí). Y para intentar remediarlo, aquí vengo con este post, en el que voy a intentar juntar la información y documentación que he usado para ponerme manos a la obra.
Qué es Ruby on Rails?
Ruby on Rails no es sólo un lenguaje, es un conjunto de un lenguaje (Ruby) sobre el que trabaja un framework (Rails). En comparación con PHP, Ruby sería el lenguaje como lo es PHP, y Rails sería la arquitectura que se levanta encima como lo podría ser el framework Zend.
En qué se diferencian Ruby y PHP?
La diferencia principal es la potencia. Si PHP es un lenguaje procedural (basado en funciones) al que paulatinamente le han dado soporte y potencia con la orientación a objetos, Ruby ya es de por si un lenguaje dónde absolutamente todo es un objeto, con lo que las posibilidades son casi infinitas. Gracias a éso, aparece una nueva diferencia a nivel de concepto: en PHP lo usual es tener algo (un string, un integer, un objeto) que pasas a una función o método para que haga el trabajo y te devuelve el resultado (otro integer, otro string, otro objeto). El Ruby lo usual es que el propio objeto (porque todo es un objeto) lleve los métodos con los que trabajar.
Pero PHP ya tiene soporte de objetos!
Si, y no va nada mal cuando te acostumbras a usarlo. En Atrapalo usábamos un framework propio que hacía un uso intensivo de los objetos. En Privalia el framework usado era Zend y en muchos aspechos se optimizaba el uso de los objetos. Pero hay conceptos que el PHP no tiene, como los code blocks de Ruby (snippets de código que puedes adjuntar a un método) o redeclarar una clase para agregarle funcionalidad (éso en PHP produce un Fatal Error), de forma que puedes hacer que una clase abra a otra y le agregue un par de métodos nuevos.
No me estás diciendo nada nuevo
Hay dos tipos de programadores: los reacios a los cambios y los que les gusta aprender. Si eres uno de los reacios tranquilo, PHP seguirá evolucionando y tendrás mayores opciones con las que jugar. Siempre lo ha hecho. Si eres uno de los segundos encontrarás una potencia de lenguaje sorprendente con la que el concepto de aplicación la enfocas desde otros puntos de vista, como plugins a un core principal, módulos atómicos que se interrelacionan entre ellos…
Vale, quiero empezar con algo
Primero de todo debo decir las versiones que actualmente se están moviendo en RoR.
Versión de Ruby: 1.8.6
Versión de Rails: 2.1.1
Sería interesante que instalaras un entorno para las pruebas que quieras hacer mientras lees los manuales. La instalación básica es muy fácil. Todas las instalaciones de RoR que he hecho (incluso en mi eeePC) han sido usando este pequeño y efectivo tutorial: How to install Rails 2.1 on Ubuntu in 5 steps, aunque voy a poner las pasos rápidamente a continuación:
1.- Instalar ruby
sudo apt-get install ruby rdoc irb ruby1.8-dev rubygems libopenssl-ruby
2.- Actualizar el gestor de paquetes Gem a la última versión
sudo gem update –system
3.- Eliminar la versión antígua de Gem
sudo apt-get remove rubygems
4.- Creamos un enlace para que los programas que busquen el Gem eliminado ejecuten el Gem nuevo
sudo ln -s /usr/bin/gem1.8 /usr/bin/gem
5.- Instalar Rails
sudo gem install rails
Además, lo suyo es ejecutar Ruby on Rails sobre MySQL, así que deberíamos instalar el servidor MySQL con la librería de Ruby correspondiente:
sudo apt-get install mysql-server libmysql-ruby
Una vez se tiene el entorno montado simplemente es cuestión de seguir algun manual. Qué manuales deberíamos seguir? Bueno, aquí la cosa depende de los gustos de cada uno. Voy a dar una lista de manuales que valdria la pena seguir desde mi punto de vesita.
- Pargmatic Bookshelf - Programming Ruby (2nd edition). Ideal para aprender el lenguaje Ruby. No se toca nada de Rails. Genial para coger base en el lenguaje
- The Rails Way. Enseña la forma de trabajade Rails, explicando las capas de abstracción que Rails usa. Según mis compañeros de moterus.es, “indispensable”
- Rails for PHP developers. Genial libro dónde da por supuesto que sabemos programar en PHP, usando ésto para enseñarnos Rails. Se avanza muy rápido, y no sustituye los dos anteriores.
He puesto lo enlaces de Amazon para tener claro qué libros son, pero supongo que no tendréis problemas para encontrar sus versiones en PDF por internet
Qué otros recursos son interesantes?
Isaac y Francesc me pasaron un listado de enlaces interesantes. Simplemente los voy a reproducir aquí:
A medida que vaya aprendiendo más sobre este entorno escribiré más. Ahora en SyntaxError tenemos un nuevo tag Ruby on Rails
Salu10.
Tag:
Escribe un Comentario