8
para programadores Ruby on Rails: ¿nos gusta porque está de moda o porque lo vale? 58 Linux+ 3/2007 [email protected] Ruby on Rails: ¿una moda? En estos momentos uno de los entornos de programación web sobre el que más se habla es Ruby on Rails. Existe la controversia típica 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 características novedosas? Carolina García Cataño E n este artículo intentaremos ver y entender qué es Ruby on Rails, pero también analizar en qué sentido se está comparando con otros lenguajes o entornos para tener elementos de decisión y ver si Ruby on Rails será una tecnología que nos interese usar. Ruby on Rails, de ahora en adelante RoR, es un entor- no de programación web desarrollado en Ruby por David Heinemeier Hansson, como resultado del desarrollo de Basecamp (un software para la gestión de proyectos vía web, basado en un interfaz sencillo, claro, fácil de usar, sin complicaciones). La primera versión de RoR salió a la luz pública 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 rápidamente, una serie de nuevos elementos están incorporándose a la concepción 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 creación de redes sociales que permitan que los propios usuarios vayan construyendo la web y asociado a todo ello están una serie de tecnologías Que van irrumpiendo con fuerza, XHTML, XML, AJAX, RSS, metodologías ágiles, entornos de programa- ción para lenguajes ya extendidos como PHP, JSP, ASP, entre medias aparece Ruby on Rails y por otra parte cada vez es más relevante el uso de los numerosos estándares 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 japonés Yukihiro Matsumoto (Matz). Es un lenguaje orientado a objetos y es software libre; hereda ciertas carac- terísticas 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 diseñado para un desarrollo rápido y sencillo. Cada día este lenguaje va ganando más 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 características del lenguaje se encuentran:

Ruby on Rails una moda.pdf

Embed Size (px)

Citation preview

  • 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