para programadoresRuby on Rails: nos gusta porque est de moda o porque lo vale?
58 Linux+ 3/2007
para programadoresRuby on Rails: nos gusta porque est de moda o porque lo vale?
59www.lpmagazine.org
linux
@so
ftwar
e.co
m.p
lRuby on Rails: una moda?En estos momentos uno de los entornos de programacin web sobre el que ms se habla es Ruby on Rails. Existe la controversia tpica de cuando sale algo nuevo: ser mejor o peor que lo ya existe (PHP, Python, J2EE)?, ser una moda, o realmente aportar una serie de caractersticas novedosas?
Carolina Garca Catao
En este artculo intentaremos ver y entender
qu es Ruby on Rails, pero tambin analizar
en qu sentido se est comparando con otros
lenguajes o entornos para tener elementos de
decisin y ver si Ruby on Rails ser una tecnologa que nos
interese usar.
Ruby on Rails, de ahora en adelante RoR, es un entor-
no de programacin web desarrollado en Ruby por David
Heinemeier Hansson, como resultado del desarrollo de
Basecamp (un software para la gestin de proyectos va
web, basado en un interfaz sencillo, claro, fcil de usar, sin
complicaciones).
La primera versin de RoR sali a la luz pblica en
julio de 2004, con lo cual es evidente que RoR es muy
reciente, de ah las suspicacias que crea y la necesidad de
analizar y hacer compara raciones de su utilidad
En estos momentos, el desarrollo web y el mundo
entorno a l est cambiando rpidamente, una serie de
nuevos elementos estn incorporndose a la concepcin
de la web, conceptos como web 2.0, empiezan a estar en
la mente de todos, la interactividad entre el usuario y la
web, la creacin de redes sociales que permitan que los
propios usuarios vayan construyendo la web y asociado
a todo ello estn una serie de tecnologas
Que van irrumpiendo con fuerza, XHTML, XML,
AJAX, RSS, metodologas giles, entornos de programa-
cin para lenguajes ya extendidos como PHP, JSP, ASP,
entre medias aparece Ruby on Rails y por otra parte cada
vez es ms relevante el uso de los numerosos estndares
establecidos por el Consorcio de la W3C.
Para entender qu es RoR, primero tenemos que conocer
un poco en qu se apoya. RoR est programado en Ruby, un
lenguaje de script, multiplataforma, que fue creado en 1995
por el japons Yukihiro Matsumoto (Matz). Es un lenguaje
orientado a objetos y es software libre; hereda ciertas carac-
tersticas de otros lenguajes como Perl, Smalltalk, Eiffel, Ada
y Lisp y como dice el propio autor es un lenguaje aparente-
mente sencillo pero internamente complejo. Es un lenguaje
muy intuitivo casi a un nivel de lenguaje humano.
Ruby fue diseado para un desarrollo rpido y sencillo.
Cada da este lenguaje va ganando ms adeptos, tanto as
que la empresa Sun Microsystems, est apoyando un proyec-
to llamado Jruby que es un interprete de Ruby escrito 100%
en Java. Entre las caractersticas del lenguaje se encuentran:
para programadoresRuby on Rails: nos gusta porque est de moda o porque lo vale?
58 Linux+ 3/2007
para programadoresRuby on Rails: nos gusta porque est de moda o porque lo vale?
59www.lpmagazine.org
La sintaxis es simple y consistente,
Todo es un objeto,
Posibilidad de hacer llamadas directa-
mente al sistema operativo,
Muy potente para el manejo de cadenas
y expresiones regulares,
No se necesita declarar las variables,
Gestin de memoria automtica.
Una vez vistas las bases de Ruby, veamos
cuales son las pautas que sigue RoR para el
desarrollo web.
Los dos principios principales son,
primero \u201cDRY-Don't repeat yourself
o No te repitas\u201d y en segundo lugar
\u201cConvenciones antes que configuracin\
u201d.
Primer principioDRY significa que las definiciones slo de-
beran ser hechas una vez. Como Ruby on
Rails es un entorno de programacin, las
componentes estn integradas de manera
que ciertos \u201cpuentes\u201d entre ellas
no necesitan hacerse manualmente, por
ejemplo, si tienes un formulario en tu web,
con slo una lnea de cdigo puedes llamarlo
las veces que quieras y desde donde quieras,
suena bien no?
Otro ejemplo, en cada tabla en la base de
datos de tu aplicacin, puedes manipular los
registros de dicha tabla como si fueran un ob-
jeto y sus campos como si fueran un atributo,
sin necesidad de declarar nada, todo gracias al
Active Record (uno de los elementos ms lla-
mativos de RoR y que veremos ms adelante.
Segundo principioNos dice \u201cConvenciones antes que
Configuracin\u201d, esto quiere decir, que el
programador slo tiene que definir la confi-
guracin de aquello que no sea convencional.
En muchas ocasiones siempre definimos las
cosas de la misma manera, hacemos las mis-
mas configuraciones, con lo cual tendemos
a repetir ciertos pasos cada vez, con lo cual
estableciendo una serie de convenciones se
logra ahorrar mucho tiempo porque el propio
entorno de programacin por defecto genera
ciertos elementos y ciertas configuraciones.
Por ejemplo, si en nuestra aplicacin web
tenemos una clase que sea Post en el modelo,
entonces gracias a las convenciones sabemos
que en la base de datos existe una tabla que
se llama posts, as nos ahorramos escribir un
montn de cdigo a la hora de desarrollar
una aplicacin.
Las convenciones existentes en Rails han
sido definidas por el grupo de desarrollado-
res con intencin de facilitar el desarrollo,
pero eso no implica que dichas convenciones
no se puedan redefinir y cada quien pueda
configurarlo de otra forma y a su medida.
Ruby on Rails implementa una serie de
patrones de diseo que se denominan, Model-
View-Controller (MVC de aqu en adelante)
y ActiveRecord Veamos en qu consiste la
arquitectura MVC de Rails.
El modelo (Model) consiste en una serie
de clases que representan las tablas de las ba-
ses de datos relacionales o RDBMS (Relational
Database Manager System).
La vista (View) es la visualizacin de los
datos que manejan desde las clases de los
controller, generalmente esto consiste en
tener una cantidad mnima de cdigo entre-
mezclado con el html.
En el MVC, los clases de los controller
responden a la interaccin del usuario y a la
lgica de la aplicacin, que a su vez maneja
los datos del modelo y que se visualizan a tra-
vs de la vista.
En las aplicaciones web basadas en MVC,
los mtodos de los Controller se inician a tra-
vs del navegador web.
En Rails tambin existe lo que se llama
scaffolding, que facilita mucho la vida del pro-
gramador, y que consiste en la construccin
automtica de todo el cdigo necesario de la
lgica y de las vistas que se necesitan para
realizar las operaciones ms frecuentes, como
son crear nuevas entradas, leer entradas ya
existentes, modificarlas y borrarlas (en ingls
corresponder a CRUD).
Uso de AJAXAJAX parece ser la palabra de moda en el
mundo del desarrollo de aplicaciones Web,
AJAX no es una tecnologa, sino la unin de
varias tecnologas que juntas pueden lograr
cosas realmente impresionantes.
AJAX, en resumen, es el acrnimo para
Asynchronous JavaScript + XML y el con-
cepto es: Cargar y renderizar una pgina,
luego mantenerse en esa pgina mientras
scripts y rutinas van al servidor buscando, en
segundo plano, los datos que son usados para
actualizar la pgina solo re-renderizando la
pgina y mostrando u ocultando porciones
de la misma.
La intencin de todo esto es que la web
tenga un comportamiento ms receptivo
o sensible a la hora de gestionar pequeas
cantidades de informacin, de esta manera
la pgina web no tiene que recargarse por
completo cada vez que el usuario hace un
cambio. Por lo tanto aumenta la posibilidad
de interactividad de la web, la velocidad y la
usabilidad.
El hecho de que se genere HTML de
manera local en el navegador a travs de
cdigo JavaScript permite que se mejore
notablemente lo que se denomina la expe-
riencia de usuario, la informacin puede
mostrarse parcialmente segn el usuario la
demande, evitando as que el exceso de in-
formacin convierta la web en algo confuso
y poco usable.
Sin embargo, AJAX tambin presenta
algunos problemas o retos para los desa-
rrolladores de aplicaciones web que quieran
realizar una web que cumpla las normas de
accesibilidad establecidas por WAI (Web
Accessibility Initiative-Iniciativa para la Acce-
sibilidad Web). Por ejemplo, las pginas web
creadas dinmicamente no quedan regis-
tradas en el historial del navegador, por lo
Figura 1. Sitio oficial de Rails en espaol
60
para programadoresRuby on Rails: nos gusta porque est de moda o porque lo vale?
Linux+ 3/2007 61
para programadoresRuby on Rails: nos gusta porque est de moda o porque lo vale?
www.lpmagazine.org
tanto si el usuario pulsa en el botn de Atrs
de su navegador posiblemente no pueda ac-
ceder a los datos que tena en la pantalla que
haba visualizado previamente. Ajax utiliza
javascript, y esto significa tambin que la
aplicacin web no funcione en la siguiente
versin del navegador y necesite actualiza-
cin. Desde hace tiempo se ha demostrado
que basar mucho un desarrollo web en el
uso de javascript es poco fiable y difcil de
mantener sobre todo teniendo en cuenta que
Microsoft no cumple la compatibilidad de
javascript en Internet Explorer.
Rails tiene un modelo consistente y sim-
ple de implementar las operaciones con Ajax.
Una vez el navegador ha renderizado
y mostrado la pgina inicial, la interactividad
del usuario hace que se muestre una pgina
nueva o que desencadene una accin en Ajax,
esto es:
Se produce una accin por parte del
usuario, esto es, pulsar en un botn,
cambiar los datos, de un campo en un
formulario, o una accin que sea peridi-
ca basada en un temporizador.
La informacin asociada con la accin se
enva de forma asncrona al handler en el
servidor va XMLHttpRequest,
El handler del lado del servidor ejecuta
una accin basada en la informacin
y devuelve un fragmento de HTML,
El JavaScript en el lado cliente (que Rails
ha creado automticamente) recibe el
fragmento de cdigo HTML y lo utiliza
para actualizar una parte especfica de la
pgina HTML en la que se encuentra el
usuario, generalmente ser el contenido
de una etiqueta .
La existencia de GEMSPara hacernos an ms fcil la vida, existen
las RubyGems que es un sistema de empa-
quetar en Ruby.
Un gem es un aplicacin o librera de
Ruby empaquetada, tiene un nombre (por
ejemplo rake) y una versin (por ejemplo
0.4.16). La existencia de gems permite que:
Exista una forma estndar de distribuir
los programas y libreras de Ruby,
Tener una herramienta que permite el
fcil manejo e instalacin de los paquetes
de gems,
Un servidor de gems que permite dispo-
ner de las gems desde cualquier mquina
donde RubyGems est instalado.
Las gems se gestionan desde cada ordenador
utilizando el comando gem. Se pueden instalar,
eliminar, buscar (entre otras posibilidades) pa-
quetes de gems mediante el comando gem.
RubyGems es el nombre del proyecto que
ha desarrollado el sistema de empaquetado
de gems y el comando gem. Se puede obtener
RubyGems en el repositorio de RubyForge
(http://rubyforge.org/projects/rubygems).
Veamos cmo utilizar el comando gems
para obtener distinto tipo de informacin.
Listado de las gems disponiblesSi ejecutamos:
gem query --remote # atajo:
gem q -R
entonces obtendremos un listado de todas
las gems que se encuentren en el servidor
remoto.
La informacin obtenida de la ejecucin
del comando sera (la hemos reducido consi-
derablemente), ver Listado 1.
Instalacin de una gemSi ejecutamos:
gem install --remote progressbar
# shortcut: gem i -r progressbar
la gem progressbar se instalar en el orde-
nador. Vase que no es necesario especificar
la versin, pero si se desea se puede hacer.
Por defecto se instalar la ltima versin
disponible.
Por lo tanto si queremos instalar una ver-
sin especfica, haramos:
gem ins -r progressbar-0.0.3
o
gem ins -r progressbar --version '>
0.0.1'
Desinstalando una gemSi queremos desinstalar una gem, tan slo
tenemos que escribir lo siguiente.
gem uninstall progressbar
Successfully uninstalled progressbar
version 0.0.3
Listado de todas las gems instaladas:
gem query --local
# atajo: 'gem q -L'
Instalando Ruby on RailsPara la instalacin de Ruby on Rails, pode-
mos hacerlo de dos formas, manualmente
haciendo uso de las gems, como hemos visto
en el apartado anterior, o bien usando otras
herramientas especficas para cada sistema
operativo:
Para usuarios de Debian o UbuntuPrimero tenemos que instalar Ruby sudo apt-
get install ruby irb rdoc
Luego instalamos las gems, descargando
un fichero de http://rubyforge.org/frs/?group_
id=126&release_id=5803 y descomprimindo-
lo en nuestro ordenador (ver Figura 2).
tar zxvf rubygems-0.9.0.tgz
luego vamos al directorio creado
cd rubygems-0.9.0Figura 2. Rubyforge.org, sitio de proyectos open source en Ruby
60
para programadoresRuby on Rails: nos gusta porque est de moda o porque lo vale?
Linux+ 3/2007 61
para programadoresRuby on Rails: nos gusta porque est de moda o porque lo vale?
www.lpmagazine.org
y ejecutamos:
ruby setup.rb all
Ahora instalamos Rails:
gem install rails include-
dependencies
Para poder empezar con Rails vamos a ne-
cesitar un servidor web, por defecto instala
Webrick.
Para ponerlo en marcha, tenemos que
ejecutar:
script/server -d -p 3000
Y necesitaremos una base de datos como
MySQL, que tendremos que tener instalada
adems de alguna librera extra como libmys-
ql-ruby (para el caso de MySQL, pero se po-
dra usar otra bases de datos cmo PostreSQL)
Para usuarios de Mac Os XEn el sistema Mac OsX existe una herramien-
ta muy sencilla que permite la instalacin
y facilita el desarrollo en Rails, se denomina
Locomotive (http://locomotive.raaum.org/)
Locomotive est disponible como bi-
nario universal, tanto para arquitectura de
PowerPC como Intel (como requisito tiene
que ser Mac OS X 10.3 o posterior) . Ser nece-
sario tener instalado las herramientas Xcode
para poder usar las rubygems y compilar
cdigo nativo.Por defecto, el servidor web
ser lighttpd con FastCGI y la base de datos
que usar ser SQLite, pero tambin se puede
enganchar a MySQL y PostgreSQL.
Se puede instalar manualmente tambin
siguiendo las instrucciones que aparencen
en:
+info http://hivelogic.com/articles/
2005/12/01/ruby_rails_lighttpd_mysql_
tiger
Para usuarios de WindowsEn Windows podemos echar mano de Instant
Rails (http://instantrails.rubyforge.org/wiki/
wiki.pl) , que contiene Ruby, Rails, Apache
y Mysql, todo preconfigurado y listo para
usar. Tendrs que descargar un fichero zip,
descomprimirlo en un directorio, y en dicho
directorio ejecutar InstantRails.exe.
Instant Rails detectar preguntar si quie-
res actualizar las rutas en todos los ficheros de
configuracin...pulsa sobre el si.
Para una instalacin manual debemos
descargarnos cada uno de los mdulos:
Los archivos debern ser descargados en
un slo directorio y los comandos ejecutados
en ese directorio.
gem install rake-0.7.1.gem
gem install activesupport-1.3.1
gem install activerecord-1.14.4.gem
gem install actionpack-1.12.5.gem
gem install actionmailer-1.2.5.gem
gem install actionwebservice-1.1.6.gem
gem install rails-1.1.6.gem
Muy bien hasta aqu ya debemos tener insta-
lado Ruby y Rails satisfactoriamente.
Ahora que menos que escribir un clsico
con Rails, cmo escribir hola mundo en nues-
tro navegador con Rails.
En primer lugar tendremos que crear
nuestro proyecto rails con
rails MiProyecto
este comando crea toda la estructura de fiche-
ros y directorios necesarios.
Ahora para comprobar que nuestra ins-
talacin es correcta ponemos en marcha el
servidor web que viene con Ruby, Webrick,
en la lnea de comandos, desde dentro del di-
rectorio del proyecto que acabamos de crear,
escribimos:
ruby script/server
y si todo ha ido bien, accediendo a http:
//localhost:3000 veremos una pagina de bien-
venida de Rails.
De momento nuestra aplicacin no hace
nada, as que vamos a crear un controlador
con
ruby script/server
Creamos un controlador
ruby script/generate controller test
Vers que se crean una serie de directorios
y ficheros, entre ellos tienes que encontrar
directorio_trabajo_rails/ejemplo/app/controllers/
test_controller.rb.
Al controlador vamos a agregar un m-
todo index:
class TestController <
ActionController::Base
def index
end
end
Una vez hecho esto, crearemos la vista para
esta accin que acabamos de crear, en direc-
torio_trabajo_rails/ejemplo/app/views/test crea
un archivo llamado index.rhtml y dentro
escribimos el texto Mundo Hola desde RoR!,
lo grabas y si accedes desde el navegador
a http://localhost:3000/test/ vers tu primera
incursin en Rails.
Digamos que te controlador test es el con-
trolador principal de tu aplicacin, lo ideal es
que los usuarios entren a tu pgina a travs
de simplemente escribiendo tudominio.com,
y no teniendo que escribir tudominio.com/
test , para lograr esto editemos directorio_tra-
bajo_rails/ejemplo/config/routes.rb: descomenta-
mos la lnea
# map.connect '', :controller =>
"welcome" quedara as:
map.connect '', :controller => "test":
Figura 3. Loudthinking, blog personal del desarrollador de Rails David Heinemeier Hansson
62
para programadoresRuby on Rails: nos gusta porque est de moda o porque lo vale?
Linux+ 3/2007
Y como nos indican unas lneas arriba, debe-
mos borrar el archivo directorio_trabajo_rails/
ejemplo/public/index.html y ahora si se podra
acceder a travs de http://localhost:3000/.
Lo ms comn es hacer aplicaciones que
accedan a una base de datos y hagan opera-
ciones (insertar, actualizar, borrar) en la mis-
ma. Una forma sencilla de hacer esto es con lo
que en rails se denomina scaffolding.
Primero creamos en la base de datos una
tabla que se llame recetas, por ejemplo, si
queremos hacer una base de datos de recetas.
Configuramos el acceso desde rails en el fi-
chero database/config.yml y ahora tenemos
dos opciones, crear el modelo y el controlador
Receta:
ruby script/generate model Receta
ruby script/generate controller Receta
y en el fichero del controlador poner:
class RecetaController <
ActionController::Base
scaffold :receta
end
De esta forma se generan dinmicamente todos
los mtodos necesarios para aadir, modificar
y borrar recetas en nuestra base de datos. Esta
forma puede servir para aplicaciones muy sen-
cillas en las que no necesitemos nada ms.
Otra opcin es usar un generador que
crea todos los ficheros con el cdigo de la
opcin anterior:
ruby script/generate scaffold Receta
De esta forma podemos tomar este cdigo co-
mo base y modificarlo para adaptarlo a nues-
tra aplicacin.
Hasta ahora, estamos viendo que en Rails
la mayor parte de las cosas son ventajas, facili-
dades, sencillez, simplicidad, elegancia, pero
tambin nos encontramos ante ciertos peros,
que son los que en muchas ocasiones frenan
a los desarrolladores a usar Rails, veamos si
realmente son peros consistentes.
Rendimiento y escalabilidadGeneralmente uno de los problemas que se
asocian a Rails es el rendimiento y la escala-
bilidad, por un lado, se dice porque Ruby es
lento o en genrico los lenguajes interpretados
son lentos.
Ante eso, encontramos como respuesta
en el blog de DHH, www.loudthinking.com,
algo que es parte de la propia filosofa de
Rails, no se busca un lenguaje o entorno de
programacin que sirva para todas las situa-
ciones, no hay que reinventar la rueda, sino
saber en qu momento qu herramientas hay
que usar, Rails est orientado a desarrollo
web, si en algn momento la aplicacin tiene
un cuello de botella, quiz la forma de evi-
tarlo sea usando otro lenguaje (C, C++, Java)
que haga determinada tarea de forma ptima,
puede que parezca hacer trampa, pero es una
forma que casos especficos en los que el
rendimiento pueda ser peor no determinan el
desarrollo general de una aplicacin web.
PerformanceDefinitivamente, una debilidad de Ruby po-
co conocida (o poco publicitada), es su baja
performance en velocidades de ejecucin.
Los benchmarks en diversos equipos y con
distintas rutinas sealan a Ruby como un len-
guaje lento, en comparacin con PHP4, y ms
Listado 1. Gems en servidor remoto
activerecord (0.8.4, 0.8.3, 0.8.2, 0.8.1, 0.8.0, 0.7.6, 0.7.5)
Implements the ActiveRecord pattern for ORM.
BlueCloth (0.0.4, 0.0.3, 0.0.2)
BlueCloth is a Ruby implementation of Markdown, a
text-to-HTML conversion tool for web writers.
Markdown allows you to write using an easy-to-read,
easy-to-write plain text format, then convert it to
structurally valid XHTML (or HTML).
captcha (0.1.2)
Ruby/CAPTCHA is an implementation of the 'Completely
Automated Public Turing Test to Tell Computers
and Humans Apart'.
cardinal (0.0.4)
Ruby to Parrot compiler.
cgikit (1.1.0)
CGIKit is a componented-oriented web application
framework like Apple Computers WebObjects. This
framework services Model-View-Controller architecture
programming by components based on a HTML file, a
definition file and a Ruby source.
Si queremos buscar gems en el servidor remoto para posteriormente poder
instalarlas, lo haramos de la siguiente forma:
gem query --remote --name-matches doom
# atajo: gem q -R -n doom
Se obtiene como resultado lo siguiente:
*** GEMS EN SERVIDOR REMOTO***
ruby-doom (0.8, 0.0.7)
Ruby-DOOM provides a scripting API for creating DOOM
maps. It also provides higher-level APIs to make map
creation easier.
Figura 4. Tabla comparativa de Rails y J2EE
Rails
Container
J2EE
M-V-C
Webrick Tomcat Servlet Container
DispatchServlet ActionServlet
Active Record Hibernate
ActionController RHML
Persistence
DatabaseMySQL MySQL
Action ActionForm JSP
64
para programadoresRuby on Rails: nos gusta porque est de moda o porque lo vale?
Linux+ 3/2007
lento aun en comparacin a PHP5. Como
contrapartida, posee una excelente gestin de
memoria, superior a las 2 versiones de PHP
en el mercado actual.
Comparando Rails con PHPCuando aparece alguna novedad siempre
hay tendencia a hacer comparaciones, cuan-
do en muchos casos tampoco tiene mucho
sentido hacerlas.
En el caso de establecer una comparacin
entre PHP y RoR, se parte de un error de base,
no son comparables, podramos hacer una
comparacin entre peras y manzanas? Por
qu se genera esta falsa comparacin?
PHP es un lenguaje de script, extre-
madamente liberal, no lo ata con ninguna
tecnologa extra y su forma de uso est ms
basado en la programacin estructurada,
influencia del lenguaje C. Sin embargo RoR
es un entorno de programacin basado en
Ruby, siendo Ruby un lenguaje orientado a
objetos 100%.
La mejora del modelo de OOP en PHP5
ha trado aparejado el surgimiento de un
nmero importante de entornos de progra-
macin (Cake, PRADO, Symfony, etc.) que se
van agregando al lote del Zend Framework,
aunque ninguno logra imponerse fuertemen-
te sobre el resto.
Figura 5. Amazon apuesta por Rails en su sitio unspun.amazon.org
Por otro lado, el concepto de Rails como
Framework MVC + ActiveRecord, ideal para
el desarrollo gil de sitios Web 2.0, segura-
mente no es la panacea universal ni la solu-
cin definitiva, ya que podemos encontrar
otras posibles soluciones en otros lenguajes:
Cake (PHP). Anteriormente citado,
Django (Python),
Trails (Java).
Estos funcionan tan bien o inclusive mejor
que RoR, dependiendo del sistema con el que
estamos lidiando.
Flexibilidad vs. OrganizacinEn muchos casos se oye decir a desarrolladores
web que RoR est ms organizado y es ms es-
tructurado mientras que PHP es ms flexible.
Tanto Ruby como PHP son lenguajes de
scripting con propsito similar. La organiza-
cin que le dota Rails a Ruby bien se la puede
entregar cualquier Framework a PHP, como
ser algunos de los citados anteriormente.
Comparando Rails con DjangoDjango es uno de los entornos de programa-
cin ms competente para el desarrollo web
en Python. Es destacable en primer lugar
porque est altamente reconocido por parte
de los programadores de Python y en se-
gundo lugar es un entorno de programacin
de nueva generacin que no necesita copiar
Ruby on Rails.
Django y Rails aspiran a resolver un
tipo de problemas similares, de una manera
similar, usando una arquitectura similar. En
P U B L I C I D A D
65
para programadoresRuby on Rails: nos gusta porque est de moda o porque lo vale?
www.lpmagazine.org
la actualidad no parece que haya especiales
ventajas tcnicas en cambiar de entorno de
programacin para un grupo desarrollador
de Django a Rails y viceversa. Para los desa-
rrolladores que no se encuentran utilizando
ninguno de los dos entornos de programacin
para la implementacin web, pero que sin em-
bargo utilizan Python o Ruby, pues lo lgico
es que los primeros se beneficien de Django y
los segundos de Rails, aprovechando los cono-
cimientos adquiridos que tiene en los respec-
tivos lenguajes de script. Para desarrolladores
que no conozcan ninguno de los dos lenguajes
pues la eleccin depender del tipo de entorno
de desarrollo y del tipo de aplicacin.
Comparando Rails con J2EEUno de los debates ms acalorados a la hora
de comparar Rails con otros entornos de pro-
gramacin ya existentes, es el que existe entre
Rails y J2EE.
Si observamos la figura a continuacin,
veremos que son pocas las diferencias reales
entre los elementos que componen una apli-
cacin web. ambos tiene un contenedor en el
que el cdigo de la aplicacin se ejecutar, un
entorno MVC que facilita la separacin entre
el modelo, la vista y el controlador y la exis-
tencia de un mecanismo que permite que los
datos sean persistentes
Por lo tanto posiblemente no sea tanto
la parte tcnica lo que diferencia ambos
entornos de programacin sino la filosofa
que siguen los desarrolladores de cada uno
de los entornos, mientras Rails prefiere
tener cdigo explcito en lugar de ficheros
de configuracin, el hecho de que Ruby sea
un lenguaje ms gil y permite generar con
cdigo en tiempo de ejecucin. Generalmente
Rails se basa en proyectos individuales, y la
aplicacin puede definir componentes ho-
mogneos. En cambio, en J2EE la tendencia
es desarrollar los mejores componentes de
manera independiente uno de otro, y se uti-
liza XML para la configuracin y unin de los
distintos componentes.
Grandes y no tan grandes usan RailsEn muchas ocasiones se seala a Rails como
una apuesta vana, con escasa trascendencia
porque no est siendo utilizado como entorno
de programacin en sitio grandes, con gran
cantidad de trfico. Sin embargo hemos de
tener en cuenta que Rails apenas ha sido publi-
co hace poco ms de 3 aos, lo cual puede ser
una razn para pensar que la implementacin
de sitios web no es automtica, an as si mi-
ramos con detalle, veremos que son mltiples
las apuestas por el uso de Rails en empresas
grandes y desde luego en las no tan grandes.
Veamos algunos ejemplos de donde se
est utilizando Rails, sin incluir a las platafor-
mas creadas por los propios creadores de RoR
(37 signals o Basecamp):
Amazon usa Rails en Amazon Unspun,
ejemplo de aplicacin de la web 2.0 donde
la intencin es llegar a consensos colectivos
sobre cualquier tipo de tema, dando la posi-
bilidad a los usuarios de crear listas y sobre la
temtica elegida poder establecer un consen-
so de si es bueno, malo, divertido, etc.
Leopard, la nueva versin del sistema
operativo Mac OsX incluir por defecto, el
entorno de programacin de aplicaciones
web de Ruby On Rails.
IBM ha aadido Ruby on Rails a la lista de
entornos de programacin para DB2, entre los
cuales tambin se incluyen Java, .Net y PHP.
Odeo, es un portal de podcasting con mi-
llones de visitas. La coctelera, ha desarrollado
The Shaker, una herramienta para la publica-
cin y administracin de contenidos en Inter-
net, es un servidor de blogs, que se caracteriza
por su sencillez, facilidad de uso y usabilidad.
ConclusinHemos visto de una manera rpida, las prin-
cipales caractersticas de Ruby on Rails, las
ventajas que tiene, la agilidad, facilidad de de-
sarrollo, es un lenguaje cuya lectura es accesible
a primera vista, est pensado para potenciar la
usabilidad en las aplicaciones. Tambin hemos
visto alguno de los puntos flacos de los que se
acusa a Rails, como es el rendimiento, aunque
se podra decir que en estos momentos la inver-
sin de personal de desarrollo es mayor que la
inversin en hardware, con lo cual habra que
evaluar realmente qu necesita la aplicacin
que tengamos entre manos. Sin embargo,
desde la experiencia de Dabne como empre-
sa que desarrolla en Rails, slo hemos visto
ventajas, la existencia de conveciones ahorran
tiempo, evita reprogramacin de cierto cdigo,
el scaffolding permite poder poner en marcha
una aplicacin de manera rpida, para emplear
el tiempo en las partes ms especficas de la
aplicacin, adems existe una comunidad de
rails muy activa, lo cual siempre es una buena
forma de aterrizar en algo nuevo.
Figura 6. La coctelera, servidor de blogs en espaol desarrollado en Rails por The-Cocktail
Carolina Garca Catao es socia de la empresa Dabne-Tecnologas de la infor-macin. Podis escribirle a [email protected].
Sobre la autora
Sitio oficial de Rails en espaol: rubyonrails.org.es/. Lista de correo de rails en espaol: http://lists.simplelogica.net/mailman/
listinfo/ror-es. Blogs: http://www.lacoctelera.com/railes, http://www.shinkitune.com/blogonrails/, http://sobrerailes.com/. Fuentes: http://rubyforge.org/, http://rubygems.org/.
En la red