Saltando de PHP a Ruby on Rails
24 de Septiembre de 2008 en Programación, Ruby on Rails
Lecturas: 5,085

Ruby on RailsHa 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:
 Enviar a Fresqui

Leer los Comentarios

[ # 37330 ] Comment desde Rafa Garcia [24 de Septiembre de 2008, 03:01]

Buen post. De blog vulgar nada de nada. Agregado a mi netvibes has sido así que esperamos mas entradas jugosas como esta.

Un saludo.

[ # 37332 ] Comment desde Moises [24 de Septiembre de 2008, 03:06]

Vaya otro que se pasa a RoR … :)
Solo una cosa, PHP no es funcional. En la 5.3 entran las closures y se acerca algo a la programación funcional, pero nada. Supongo que querias decir procedural.

[ # 37338 ] Comment desde Xavi [24 de Septiembre de 2008, 03:43]

Gracias Rafa, espero recuperar el tiempo perdido

Moises, tienes toda la razón. Corregido ;)

[ # 37449 ] Trackback desde David Esperalta [25 de Septiembre de 2008, 05:39]

Recopilación de enlaces 31…

Por no perder la costumbre, ¿eh? :)

La depuración de programas y nosotros
Las operadores móvil y el control de Internet

[ # 38149 ] Comment desde david [29 de Septiembre de 2008, 04:18]

buen paso! espero que entiendas la filosofia del lenguaje y del framework

deberias hecharle un vistazo a merb+dm tambien, es asombroso y MUCHO mas rapido que rails, en octubre 11 sera liberada la version 1.0 :)

un saludo

[ # 42735 ] Comment desde Jose Manuel Perez [29 de Octubre de 2008, 09:23]

Vaya! Así que cambiando de bando :P Igual te interesa una conferencia en rails que se llevará a cabo en breve: http://www.conferenciarails.org/.

[ # 42810 ] Comment desde Xavi [30 de Octubre de 2008, 09:19]

Iep!
dichosos los ojos, Jose! xD
Pues si, ahora ya llevo casi un par de meses y estoy encantado. Sobre la conferencia, ya he leído la notícia en informatica.cat, y de hecho mis compañeros de curro (que también son mis jefes xD) ya tienen asiento y viaje reservado, pero a mi me coinciden las fechas con un viaje y no voy a poder estar.

Salu10!

[ # 66294 ] Comment desde Pablo [masTecno y BetaDir] [01 de Abril de 2009, 08:42]

Coincido en que este es un muy buen post. Ojalá algun dia sepa lo suficiente de POO como para decir que dejo PHP y empiezo con RoR. Felicitaciones…… la espera por este post valió la pena xD

[ # 68534 ] Comment desde Master distancia [07 de Mayo de 2009, 11:54]

Muy bueno el post, tengo que probar Ruby he leido muy buenas criticas , saludos

Escribe un Comentario





Estadísticas