SlideShare una empresa de Scribd logo
1 de 4
Descargar para leer sin conexión
28-32 CODE26.internet.qxd         5/16/06      12:47 PM         Page 28




          {internet | Ruby}

     DESARROLLO WEB ÁGIL

     Ruby On Rails
     Ruby on Rails es un framework de desarrollo web diseñado para aumentar
     extremadamente la productividad, que está empezando a causar furor.

                   Enrique Place
                   Consultor especializado                                                  /blog/display/5
                   en Free Software y en Open Source.
                   enriqueplace.blogspot.com
                                                                                     1. Respuesta                               /dispatcher.rb?
                                                                      Navegador                           Apache o              controller=blog&
                                                                        Web                               WEBrick               action=display&
                                                                                                                                id=5
                  proximadamente desde 1997 me desempe-


       A          ño como consultor en proyectos relacio-
                  nados con Software Libre, y con el correr
                  de los años, esta temática se ha ido orien-
     tado al ambiente web. Desde mis inicios, he optado por
                                                                              6. Pantalla
                                                                                                  2. Envío


                                                                                                         Dispatcher
                                                                                                                                 1. Configure framework
                                                                                                                                 2. Wrap CGI in request


     PHP, pues era (en mi experiencia) la mejor alternativa                                     3. Creación
     disponible entre los lenguajes de desarrollo web. Des-
     carté opciones propietarias como ASP, y otras Open                                                               4a. CRUDs        Registro
                                                                                        5a.Renders
     Source como Perl, principalmente, porque PHP me                                                       Control                      activo
                                                                          Acción                                         4b. Envío
     ofrecía la mayor libertad al más bajo costo.                                                         de acción
       Hasta el día de hoy, sigo pensando lo mismo, pero
     algo ha cambiado. Cada vez disponemos de menos
     tiempo para concretar nuestros proyectos, necesita-
     mos dar más valor agregado a los desarrollos que rea-                                            5b.Redireccionar
     lizamos y debemos adaptarnos más rápido a los cam-                                                                       Mailer
     bios: lo que sucede es que nos están obligando a ser
     cada vez más productivos.
       Si hace algunos años que trabajan en ambientes web
     y no tienen la filosofía de reaprovechar los avances de     [Figura 2] Diagrama que describe el funcionamiento de RoR.
     sus desarrollo de software en beneficio de los proyec-
     tos futuros, estarán siendo parte de la famosa “fábrica
     de ruedas”; es decir, estarán reinventando la rueda de      fue desarrollado por completo con el lenguaje de programación Ruby. A pesar
     forma constante sin aprovechar la experiencia adqui-        de que ustedes quizá usen Rails, en algún momento necesitarán escribir códi-
     rida con el pasar de los años. De esta forma, será im-      go en el lenguaje Ruby. Por todas estas razones, es que el nombre combina am-
     posible ser “extremadamente productivo”.                    bas cosas: Ruby On Rails
                                                                   RoR está basado fuertemente en una estructura con persistencia de datos, pe-
     ¿Qué es Ruby On Rails?                                      ro lo que nos debe importar es que las grandes bases de datos del Software Li-
       Como no debemos tener miedo a lo nuevo ni a los           bre, como MySQL y PostgreSQL, se encuentran disponibles.
     cambios, y debemos estar informados y lograr hacer            Su creador, el danés David Heinemeier Hansson (DHH), generó este frame-
     juicios de valor apoyados en experiencias reales y no       work para cubrir las necesidades de desarrollo de un proyecto web, y fue ga-
     en meras suposiciones, me animé a experimentar con          lardonado con el título Best Hacker 2005 en el evento O´Reilly Open Source
     otras alternativas.                                         Awards, organizado por Google.
       Ruby On Rails, muchas veces abreviado como RoR,             Según ha expresado en entrevistas, esta idea surgió de dos ámbitos de ex-
     significa “Rubí sobre Rieles” y, por definición, es un      periencia al empezar a trabajar con RoR: PHP (rápido y sucio) y Java/J2EE
     framework Open Source para desarrollo rápido de             (lento y limpio). El objetivo de RoR era tratar de unir lo mejor de ambos
     aplicaciones web. Si somos estrictos, veremos que el        (rápido y limpio).
                              nombre está compuesto por
                              dos palabras clave: Ruby por       El lenguaje de programación Ruby
                              un lado y Rails por el otro.         Vale decir que llegamos indirectamente al lenguaje. A pesar de que la ma-
                              En realidad, el framework se       yoría de las distribuciones GNU/Linux incluyen a Ruby (entre muchos otros
                              llama, simplemente, Rails y        lenguajes), hasta hace poco tiempo, éste no era muy popular. El autor de
                                                                 Ruby se llama Yukihiro Matsumoto, de origen japonés, más conocido por
                                                                 el seudónimo de Matz.
                                                                   Entre las cualidades de este lenguaje podemos mencionar que es totalmente
                               [Figura 1]                        orientado a objetos (más que otros muy populares), de alto nivel y, sobre todo,
                               Logo de Ruby On Rails.            “divertido de programar” (según las palabras de su autor).

     28                                                                                                                                            users.code
28-32 CODE26.internet.qxd          5/16/06      12:47 PM      Page 29




     Concepto base I: el patrón MVC
       Los Patrones de diseño evitan tener que reinventar la rueda para
     resolver problemas ampliamente conocidos y resueltos innumera-                         Person
     bles veces, a la vez que nos sirven de modelo para hacer soluciones           lastName
     “reutilizables” y “extensibles”, porque aplican las mejores prácticas         firstName
     del Diseño Orientado a Objetos.                                               numberOfDependents
       Este framework se basa en un patrón de diseño muy conocido, el              insert
     Modelo, Vista, Controlador (MVC). La idea del patrón es separar el            update
     problema en tres capas: el modelo, que representa la lógica del sis-
     tema; la vista, que se encarga de mostrar la información del mode-            getExemption
     lo; y el controlador, que toma las acciones del usuario del sistema           isFlaggedForAudit
     e interactúa con el modelo y con la vista.                                    getTaxableEarnings
       Nuestro sistema quedará estructurado en tres capas independien-
     tes, que tienen responsabilidades distintas y bien diferenciadas,
     con lo cual se logra que sea más fácil de desarrollar y de mantener.    [Figura 3] Representación UML del patrón de diseño
                                                                              ActiveRecord.
     Concepto base II: el patrón ActiveRecord
       En Ruby On Rails, el Modelo del patrón MVC se implementa a tra-
     vés del mapeo del “objeto” con su correspondiente “tabla” en la ba-
     se de datos.
       Este patrón resuelve el eterno problema de la comunicación en-
     tre modelos de datos distintos, entre el Relacional y el Orienta-
     do a Objetos.

     ¿Cómo se instala?
       Existe mucha información en Internet, pero a veces, ésta puede
     ser inexacta o cometer pequeños errores. Si no tenemos experien-
     cia en RoR, es frustrante iniciarse con tanta dificultad extra.

     Instalación en Windows (tres pasos)
       El primer y mejor tutorial que existe hasta el momento para ha-
     cer una instalación es de O'Reilly: www.onlamp.com/pub/a/onlam-
     p/2005/01/20/rails.html (“Rodando con Rubí sobre Rieles”), pero
     sólo contempla el sistema operativo Windows. Por esa razón, va-
     mos a hacer una explicación que abarque ambas instalaciones, ya
     que, a pesar de que son muy parecidas, tienen pequeños detalles
     que se deben tener en cuenta.                                           [Figura 4] Pantalla de instalación de Rubyinstaller,
                                                                             con las aplicaciones que incluye por defecto.
     > Paso 1: Instalar Ruby
       Bajamos el instalador de Ruby desde http://rubyinstaller.ruby-
     forge.org. Éste ya incluye Gems (http://rubygems.rubyforge.org), la      Successfully installed rails-1.0.0
     aplicación que permite instalar el framework Rails y que usaremos        Successfully installed activesupport-1.2.5
     en el paso siguiente.                                                    Successfully installed activerecord-1.13.2
                                                                              Successfully installed actionpack-1.11.2
     > Paso 2: Instalar Rails                                                 Successfully installed actionmailer-1.1.5
       Si ya tenemos instalado Gems, sólo debemos abrir una ventana           Successfully installed actionwebservice-1.0.0
     que permita escribir comandos desde la línea. Desde la barra de ta-      Installing RDoc documentation for
     reas, presionamos:                                                         activesupport-1.2.5...
                                                                              Installing RDoc documentation for
       Botón de Inicio-> Ejecutar -> y escribe “cmd”                            activerecord-1.13.2...
                                                                              [Mensaje resumido]
      Al presionar ENTER, se ejecutará una consola DOS que nos per-
     mitirá digitar los comandos del instalador del framework. Debere-        Si no se agrega el último parámetro (“incluir dependencias”), por
     mos posicionarnos, primero, en el directorio donde instalamos           cada software que falte, va a preguntar si queremos instalarlo, lo
     Ruby (acción realizada en el Paso 1):                                   que sucede casi en seis oportunidades.

       cd c:rubybin                                                        > Paso 3: Instalar MySQL
                                                                               Al principio, no debemos complicarnos. Si lo que queremos es pro-
       C:rubybin>gem install rails --remote --                             bar el entorno de desarrollo, cuando el instalador de MySQL nos
          include-dependencies                                               pregunte por el usuario administrador, indicamos “root” y su clave
                                                                             “root”. Más adelante podremos asegurar todas estas configuraciones.
       Attempting remote installation of 'rails'
       Updating Gem source index for:                                         Descarga del instalador MySQL:
            http://gems.rubyforge.org                                         dev.mysql.com/downloads/mysql

                                                                                                                                             29
28-32 CODE26.internet.qxd          5/16/06       12:47 PM         Page 30




          {internet | Ruby}



     Probar la instalación de RoR                                   cd miproyecto
       En primera instancia, debemos tener disponible el co-        ruby script/server
     mando rails desde nuestra consola. Para probarlo, nos
     posicionamos en un directorio donde alojaremos nues-          El último comando ejecuta el servidor. Nuestro servidor atenderá el puerto
     tros proyectos web basados en RoR. En Windows, po-            3000. Si usamos el navegador y apuntamos a la dirección http://local-
     dremos crear la misma estructura a partir del “directo-       host:3000 (localhost representa nuestro servidor local), nos deberá responder
     rio base”, llamado c:rails.                                  un mensaje de bienvenida, como se observa en la [Figura 5].

     Nuestro primer proyecto                                       La primera aplicación útil
       Nos dirigimos al directorio base correspondiente a            Para hacer una prueba del nuestro entorno “veloz” de desarrollo, qué mejor
     nuestro sistema, y ejecutamos el comando rails y el nom-      que hacer “esa” actividad que se repite una y otra vez en nuestros sistemas, y
     bre del proyecto que deseamos crear. La idea es que el        que el framework ya tiene sumamente resuelta: nuestro primer ABM (Altas,
     framework cree un subdirectorio con el nombre que in-         Bajas y Modificaciones).
     gresamos y, luego, él armará una serie de subdirectorios        Debemos crear la primera base de datos y la primera tabla. Ejecutamos nues-
     y archivos que corresponderán a la estructura inicial, pa-    tro cliente de turno para trabajar con MySQL (existen muchos, pero podemos
     ra poder comenzar a trabajar en nuestro proyecto RoR:         bajar los oficiales desde www.mysql.com/products/tools), y creamos la base de
                                                                   datos “miproyecto” y la tabla “cliente”, con la siguiente estructura:
       rails miproyecto
                                                                    CREATE TABLE `miproyecto`.`clientes` (
     Esto producirá la siguiente salida por pantalla:                 `id` int(3) NOT NULL auto_increment,
                                                                      `nombre` varchar(45) default NULL,
       create                                                         `telefono` varchar(45) default NULL,
       create app/controllers                                         PRIMARY KEY (`id`)
       create app/helpers                                           ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
       create app/models
       create app/views/layouts                                      Tenemos que definir cuál es la configuración de nuestra base de datos, edi-
       create config/environments                                  tando, en Windows, el siguiente archivo: C:railsmiproyectoconfigdataba-
       create components                                           se.yml. A continuación, modificamos el nombre de la base, agregamos la cla-
       create db                                                   ve del usuario y comentamos la línea “socket”:
       create doc
       create lib                                                   development:
       create lib/tasks                                               adapter: mysql
       create log                                                     database: miproyecto
       create public/images                                           username: root
       [Mensaje resumido]                                             password: root
                                                                    #socket: /path/to/your/mysql.sock
       Entramos en el directorio de nuestra aplicación y ejecu-
     tamos un mini servidor web para probar que el entorno          Si queremos ir rápido y seguro, podemos usar los “andamios” (scaffolding).
     RoR esté respondiendo:                                        Scaffold es un veloz generador de CRUD: Create, Retrive, Update y Delete, lo
                                                                   que significa, en castellano, un ABM. Posicionados en el directorio base del
                                                                   proyecto, ejecutamos el comando para generar el modelo:

                                                                    C:rails>cd miproyecto

                                                                    C:railsmiproyecto>ruby scriptgenerate scaffold Cliente
                                                                           exists app/controllers/
                                                                           exists app/helpers/
                                                                           exists app/views/clientes
                                                                           exists test/functional/
                                                                      dependency model
                                                                           exists    app/models/
                                                                           exists    test/unit/
                                                                           exists    test/fixtures/
                                                                           create    app/models/cliente.rb
                                                                           create    test/unit/cliente_test.rb
                                                                           create    test/fixtures/clientes.yml
                                                                           create app/views/clientes/_form.rhtml
                                                                    [Mensaje resumido]


                                                                    Nota: si al efectuar los cambios en el código, éstos no se ven reflejados en
     [Figura 5] Pantalla de bienvenida que nos devuelve             el servidor web WEBrick (a pesar de restaurar el navegador), deberemos rei-
     el servidor WEBrick, confirmando que todo fue                  niciar el servidor para verlos. http://127.0.0.1:3000/clientes
     instalado y configurado correctamente.

     30                                                                                                                                 users.code
28-32 CODE26.internet.qxd          5/16/06      12:47 PM       Page 32




        {internet | Ruby}



      Si presionamos sobre New Client, podremos crear nuevos clientes. Luego de agregar el
     primero, aparecerá la lista de los ingresados en el sistema, junto con tres nuevas operacio-
     nes que se aplican sobre nuestro ítem: Show, Edit y Destroy (Mostrar, Editar, Destruir).
      Está de más decir que absolutamente toda la información que vemos, y su comporta-
     miento, puede modificarse según nuestras necesidades.

     La “cereza de la torta”: pulir la castellanización
       Como forma de entrar rápidamente en otro tema, para traducir a nuestro idioma los tex-
     tos de la aplicación (que, en un principio, son generados en inglés), deberemos editar las       [Figura 6] Pantalla principal
     “plantillas” (templates) de código html. Como estamos dentro del patrón MVC, éstas se en-        de nuestro CRUD, desarrollada
     contrarán en la capa que representa la vista (tema explicado en la introducción al patrón),      a través de scaffolding.
     dentro del directorio de nuestro proyecto y con la extensión .rhtml:

       C:railsmiproyectoappviewsclientesedit.rhtml

       Aquí podremos modificar todos los textos que están a la derecha de link_to, como:

       <%= link_to 'Back', :action => 'list' %>

       Cambiando por:

       <%= link_to 'Volver', :action => 'list' %>

       Si queremos que este comportamiento sea permanente –es decir, que cada vez nuestro
     sistema genere el código del “andamio”–, deberemos modificar las plantillas del frame-
     work, ubicadas en:

       [directorio_instalación_ruby]librubygems1.8gemsactionpack-1.11.2lib                    [Figura 7] La opción New Client
         action_controllertemplatesscaffolds                                                        nos permite hacer nuestra primera Alta.

     Conclusión
       Los expertos dicen que desarrollar con este framework permite crear una aplicación
     web, al menos, diez veces más rápido que con una herramienta similar en Java. Parte
     del secreto está en el lenguaje de programación Ruby, en los Patrones de Diseño utiliza-
     dos y en la filosofía de trabajo que sigue principios de Desarrollo ágil. ¿Será el Santo Grial
     que estábamos buscando? Aún no tenemos la respuesta, pero el “lado bueno de la fuerza”
     está fluctuando hacia Ruby On Rails y, gracias a su popularidad, muchos otros proyectos
     de frameworks para desarrollo web están tomando fuerza; se puede decir que estamos en-
     trando en “la Era” (¿o la moda?) de este tipo de estrategias de desarrollo.
       Por lo pronto, recomendamos empezar a conocerlo y a probarlo en ambientes “cerrados”
     (como una aplicación para una Intranet), poner en práctica todas las operaciones clásicas        [Figura 8] Luego de ingresar el primer
     de ABM y, progresivamente, implementar el resto de nuestros requerimientos para ir su-           cliente, tenemos acceso a las opciones
     mando experiencia en el framework y en este peculiar lenguaje de programación.                   de modificar o dar de baja.
       Y el tiempo dirá si esto es una moda o si llegó para destronar a PHP, o tal vez, al mis-
     mo lenguaje Java con toda su parafernalia. q



                                   Enrique Place es Consultor en Tecnologías de la Informa-
                                   ción, especializado en Free Software y Open Source desde
                                   1997. Ha participado en varios proyectos gubernamentales y
                                   privados uruguayos, donde estas tecnologías fueron un fac-
                                   tor clave para el desarrollo de sistemas.
                                   En la actualidad, está participando en un proyecto de
                                   eGovernment (www.comprasestatales.gub.uy), investigando
                                   sobre Ruby On Rails y dictando cursos sobre Programación
                                   PHP5 y Patrones de Diseño, en universidades locales.


                                                                                                      [Figura 9] Finalmente, así se vería
                                                                  Ruby tiene lo mejor de otras        la página principal de nuestro ABM
                                                                  tecnologias y eso hace que          de Clientes, después de ingresar
                                                                  muchos opten por él.                varios registros.

      32                                                                                                                               users.code

Más contenido relacionado

Destacado

RÈGLEMENT INTÉRIEUR DU CLUB DU BASSET ARTEISEN NORMAND
RÈGLEMENT INTÉRIEUR DU CLUB DU BASSET ARTEISEN NORMANDRÈGLEMENT INTÉRIEUR DU CLUB DU BASSET ARTEISEN NORMAND
RÈGLEMENT INTÉRIEUR DU CLUB DU BASSET ARTEISEN NORMANDClub Basset Artésien Normand
 
Infographie pros-préférés francais
Infographie pros-préférés francaisInfographie pros-préférés francais
Infographie pros-préférés francaisPagesJaunes
 
Pourquoi rejoindre France PROFIBUS PROFINET ?
Pourquoi rejoindre France PROFIBUS PROFINET ?Pourquoi rejoindre France PROFIBUS PROFINET ?
Pourquoi rejoindre France PROFIBUS PROFINET ?franceprofibusprofinet
 
Module ppp voyage_iut_gea(italie)
Module ppp voyage_iut_gea(italie)Module ppp voyage_iut_gea(italie)
Module ppp voyage_iut_gea(italie)Kamel Ben Youssef
 
Francais arabe
Francais arabeFrancais arabe
Francais arabeanis dadi
 
M07 einsatz von pp einf pt2004
M07 einsatz von pp   einf pt2004M07 einsatz von pp   einf pt2004
M07 einsatz von pp einf pt2004matschu
 
Presentación Autonomía
Presentación AutonomíaPresentación Autonomía
Presentación AutonomíaMartin Mendoza
 
20111213 Marco Antonio Zuñiga
20111213   Marco Antonio Zuñiga20111213   Marco Antonio Zuñiga
20111213 Marco Antonio ZuñigaEduardo Reyes
 
Les coûts et bénéfices réels des énergies conventionelles et renouvelables
Les coûts et bénéfices réels des énergies conventionelles et renouvelablesLes coûts et bénéfices réels des énergies conventionelles et renouvelables
Les coûts et bénéfices réels des énergies conventionelles et renouvelablesEneco Belgium
 
El Periódico "Hoja Popular" del mes de Febrero 1944
El Periódico  "Hoja Popular"  del mes de  Febrero 1944El Periódico  "Hoja Popular"  del mes de  Febrero 1944
El Periódico "Hoja Popular" del mes de Febrero 1944Ciudad de Riobamba
 
Résultats des élections départementales dans les cantons hors Strasbourg
Résultats des élections départementales dans les cantons hors StrasbourgRésultats des élections départementales dans les cantons hors Strasbourg
Résultats des élections départementales dans les cantons hors StrasbourgLola Scoccia Williams Fabregas
 
Aproximar a las decenas de millar 001
Aproximar a las decenas de millar 001Aproximar a las decenas de millar 001
Aproximar a las decenas de millar 001Luis Gutiérrez
 
E sidoc 2013 2014l
E sidoc 2013 2014lE sidoc 2013 2014l
E sidoc 2013 2014lcdibriand
 
Internet y La Divulgación Científica
Internet y  La Divulgación CientíficaInternet y  La Divulgación Científica
Internet y La Divulgación CientíficaRicardo Gómez Vecchio
 
Taller SEO - Analytics
Taller SEO - AnalyticsTaller SEO - Analytics
Taller SEO - AnalyticsCarlos Chacon
 

Destacado (20)

pauvreter dans le monde
pauvreter dans le mondepauvreter dans le monde
pauvreter dans le monde
 
Fidelidad
FidelidadFidelidad
Fidelidad
 
RÈGLEMENT INTÉRIEUR DU CLUB DU BASSET ARTEISEN NORMAND
RÈGLEMENT INTÉRIEUR DU CLUB DU BASSET ARTEISEN NORMANDRÈGLEMENT INTÉRIEUR DU CLUB DU BASSET ARTEISEN NORMAND
RÈGLEMENT INTÉRIEUR DU CLUB DU BASSET ARTEISEN NORMAND
 
Per què les CoP? Com millorar-les? Equilibri i obertura. Dolors Reig
Per què les CoP? Com millorar-les? Equilibri i obertura. Dolors ReigPer què les CoP? Com millorar-les? Equilibri i obertura. Dolors Reig
Per què les CoP? Com millorar-les? Equilibri i obertura. Dolors Reig
 
Infographie pros-préférés francais
Infographie pros-préférés francaisInfographie pros-préférés francais
Infographie pros-préférés francais
 
Pourquoi rejoindre France PROFIBUS PROFINET ?
Pourquoi rejoindre France PROFIBUS PROFINET ?Pourquoi rejoindre France PROFIBUS PROFINET ?
Pourquoi rejoindre France PROFIBUS PROFINET ?
 
Sesiones 11 12 nuevos bilingües
Sesiones 11 12 nuevos bilingüesSesiones 11 12 nuevos bilingües
Sesiones 11 12 nuevos bilingües
 
Module ppp voyage_iut_gea(italie)
Module ppp voyage_iut_gea(italie)Module ppp voyage_iut_gea(italie)
Module ppp voyage_iut_gea(italie)
 
Francais arabe
Francais arabeFrancais arabe
Francais arabe
 
M07 einsatz von pp einf pt2004
M07 einsatz von pp   einf pt2004M07 einsatz von pp   einf pt2004
M07 einsatz von pp einf pt2004
 
Presentación Autonomía
Presentación AutonomíaPresentación Autonomía
Presentación Autonomía
 
20111213 Marco Antonio Zuñiga
20111213   Marco Antonio Zuñiga20111213   Marco Antonio Zuñiga
20111213 Marco Antonio Zuñiga
 
Les coûts et bénéfices réels des énergies conventionelles et renouvelables
Les coûts et bénéfices réels des énergies conventionelles et renouvelablesLes coûts et bénéfices réels des énergies conventionelles et renouvelables
Les coûts et bénéfices réels des énergies conventionelles et renouvelables
 
El Periódico "Hoja Popular" del mes de Febrero 1944
El Periódico  "Hoja Popular"  del mes de  Febrero 1944El Periódico  "Hoja Popular"  del mes de  Febrero 1944
El Periódico "Hoja Popular" del mes de Febrero 1944
 
Résultats des élections départementales dans les cantons hors Strasbourg
Résultats des élections départementales dans les cantons hors StrasbourgRésultats des élections départementales dans les cantons hors Strasbourg
Résultats des élections départementales dans les cantons hors Strasbourg
 
Aproximar a las decenas de millar 001
Aproximar a las decenas de millar 001Aproximar a las decenas de millar 001
Aproximar a las decenas de millar 001
 
E sidoc 2013 2014l
E sidoc 2013 2014lE sidoc 2013 2014l
E sidoc 2013 2014l
 
Internet y La Divulgación Científica
Internet y  La Divulgación CientíficaInternet y  La Divulgación Científica
Internet y La Divulgación Científica
 
Le monde 20150702
Le monde 20150702Le monde 20150702
Le monde 20150702
 
Taller SEO - Analytics
Taller SEO - AnalyticsTaller SEO - Analytics
Taller SEO - Analytics
 

Similar a "La era de los frameworks: Ruby On Rails"

Taller evento TestingUY 2016 - Automatización de Pruebas con Ruby
Taller evento TestingUY 2016 - Automatización de Pruebas con RubyTaller evento TestingUY 2016 - Automatización de Pruebas con Ruby
Taller evento TestingUY 2016 - Automatización de Pruebas con RubyTestingUy
 
Ruby en linux
Ruby en linuxRuby en linux
Ruby en linuxvilna2011
 
Ruby en linux
Ruby en linuxRuby en linux
Ruby en linuxvilna2011
 
Ruby on the Rails
Ruby on the RailsRuby on the Rails
Ruby on the Rails000ari2014
 
Ruby on rails
Ruby on railsRuby on rails
Ruby on railsJoski Jk
 
Ruby on Rails
Ruby on RailsRuby on Rails
Ruby on RailsJoski Jk
 
Ruby on Rails - ETyC 2011
Ruby on Rails - ETyC 2011Ruby on Rails - ETyC 2011
Ruby on Rails - ETyC 2011Rafael Franco
 
Sesión 03: Ruby y SAP
Sesión 03: Ruby y SAPSesión 03: Ruby y SAP
Sesión 03: Ruby y SAPBiz Partner
 
SAP Inside Track Lima 09 - Ruby y SAP
SAP Inside Track Lima 09 - Ruby y SAPSAP Inside Track Lima 09 - Ruby y SAP
SAP Inside Track Lima 09 - Ruby y SAPAlvaro Tejada
 
Presentación Ruby on Rails
Presentación Ruby on RailsPresentación Ruby on Rails
Presentación Ruby on RailsGiannis Morales
 
Ruby on rails
Ruby on railsRuby on rails
Ruby on railspelusa
 
Desarrollo Y ComercializacióN De Software Usando Ruby On Rails
Desarrollo Y  ComercializacióN De  Software Usando  Ruby On  RailsDesarrollo Y  ComercializacióN De  Software Usando  Ruby On  Rails
Desarrollo Y ComercializacióN De Software Usando Ruby On RailsDouglas Galindo
 
Groopify para groopies
Groopify para groopiesGroopify para groopies
Groopify para groopiesGroopify
 
Php adsi 2013 sena
Php adsi 2013 senaPhp adsi 2013 sena
Php adsi 2013 senayexikita1
 
9 razones para programar en Ruby On Rails
9 razones para programar en Ruby On Rails 9 razones para programar en Ruby On Rails
9 razones para programar en Ruby On Rails kyaalena
 
Introducción a RubyOnRails
Introducción a RubyOnRailsIntroducción a RubyOnRails
Introducción a RubyOnRailsPablo Marrero
 

Similar a "La era de los frameworks: Ruby On Rails" (20)

Taller evento TestingUY 2016 - Automatización de Pruebas con Ruby
Taller evento TestingUY 2016 - Automatización de Pruebas con RubyTaller evento TestingUY 2016 - Automatización de Pruebas con Ruby
Taller evento TestingUY 2016 - Automatización de Pruebas con Ruby
 
Ruby en linux
Ruby en linuxRuby en linux
Ruby en linux
 
Ruby en linux
Ruby en linuxRuby en linux
Ruby en linux
 
Ruby on the Rails
Ruby on the RailsRuby on the Rails
Ruby on the Rails
 
Manual de PHP Basico
Manual de PHP BasicoManual de PHP Basico
Manual de PHP Basico
 
Ruby on rails
Ruby on railsRuby on rails
Ruby on rails
 
Ruby on Rails
Ruby on RailsRuby on Rails
Ruby on Rails
 
Ruby on Rails - ETyC 2011
Ruby on Rails - ETyC 2011Ruby on Rails - ETyC 2011
Ruby on Rails - ETyC 2011
 
Sesión 03: Ruby y SAP
Sesión 03: Ruby y SAPSesión 03: Ruby y SAP
Sesión 03: Ruby y SAP
 
SAP Inside Track Lima 09 - Ruby y SAP
SAP Inside Track Lima 09 - Ruby y SAPSAP Inside Track Lima 09 - Ruby y SAP
SAP Inside Track Lima 09 - Ruby y SAP
 
Presentación Ruby on Rails
Presentación Ruby on RailsPresentación Ruby on Rails
Presentación Ruby on Rails
 
Upel ruby
Upel rubyUpel ruby
Upel ruby
 
Ruby on rails
Ruby on railsRuby on rails
Ruby on rails
 
Desarrollo Y ComercializacióN De Software Usando Ruby On Rails
Desarrollo Y  ComercializacióN De  Software Usando  Ruby On  RailsDesarrollo Y  ComercializacióN De  Software Usando  Ruby On  Rails
Desarrollo Y ComercializacióN De Software Usando Ruby On Rails
 
Acerca de ruby
Acerca de rubyAcerca de ruby
Acerca de ruby
 
Groopify para groopies
Groopify para groopiesGroopify para groopies
Groopify para groopies
 
Ruby on rails
Ruby on railsRuby on rails
Ruby on rails
 
Php adsi 2013 sena
Php adsi 2013 senaPhp adsi 2013 sena
Php adsi 2013 sena
 
9 razones para programar en Ruby On Rails
9 razones para programar en Ruby On Rails 9 razones para programar en Ruby On Rails
9 razones para programar en Ruby On Rails
 
Introducción a RubyOnRails
Introducción a RubyOnRailsIntroducción a RubyOnRails
Introducción a RubyOnRails
 

Más de Enrique Place

Introducción a UML / POO / PHP5
Introducción a UML / POO / PHP5Introducción a UML / POO / PHP5
Introducción a UML / POO / PHP5Enrique Place
 
"Uruguay desde el cielo"
"Uruguay desde el cielo""Uruguay desde el cielo"
"Uruguay desde el cielo"Enrique Place
 
"Ruby Mola (y por que)" por The Cocktail
"Ruby Mola (y por que)" por The Cocktail"Ruby Mola (y por que)" por The Cocktail
"Ruby Mola (y por que)" por The CocktailEnrique Place
 
"Introduccion a Rails" por TheCocktail
"Introduccion a Rails" por TheCocktail"Introduccion a Rails" por TheCocktail
"Introduccion a Rails" por TheCocktailEnrique Place
 

Más de Enrique Place (6)

Introducción a UML / POO / PHP5
Introducción a UML / POO / PHP5Introducción a UML / POO / PHP5
Introducción a UML / POO / PHP5
 
Php Unicode I18n
Php Unicode I18nPhp Unicode I18n
Php Unicode I18n
 
Analytics Phpsenior
Analytics PhpseniorAnalytics Phpsenior
Analytics Phpsenior
 
"Uruguay desde el cielo"
"Uruguay desde el cielo""Uruguay desde el cielo"
"Uruguay desde el cielo"
 
"Ruby Mola (y por que)" por The Cocktail
"Ruby Mola (y por que)" por The Cocktail"Ruby Mola (y por que)" por The Cocktail
"Ruby Mola (y por que)" por The Cocktail
 
"Introduccion a Rails" por TheCocktail
"Introduccion a Rails" por TheCocktail"Introduccion a Rails" por TheCocktail
"Introduccion a Rails" por TheCocktail
 

Último

pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxRogerPrieto3
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 

Último (15)

pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 

"La era de los frameworks: Ruby On Rails"

  • 1. 28-32 CODE26.internet.qxd 5/16/06 12:47 PM Page 28 {internet | Ruby} DESARROLLO WEB ÁGIL Ruby On Rails Ruby on Rails es un framework de desarrollo web diseñado para aumentar extremadamente la productividad, que está empezando a causar furor. Enrique Place Consultor especializado /blog/display/5 en Free Software y en Open Source. enriqueplace.blogspot.com 1. Respuesta /dispatcher.rb? Navegador Apache o controller=blog& Web WEBrick action=display& id=5 proximadamente desde 1997 me desempe- A ño como consultor en proyectos relacio- nados con Software Libre, y con el correr de los años, esta temática se ha ido orien- tado al ambiente web. Desde mis inicios, he optado por 6. Pantalla 2. Envío Dispatcher 1. Configure framework 2. Wrap CGI in request PHP, pues era (en mi experiencia) la mejor alternativa 3. Creación disponible entre los lenguajes de desarrollo web. Des- carté opciones propietarias como ASP, y otras Open 4a. CRUDs Registro 5a.Renders Source como Perl, principalmente, porque PHP me Control activo Acción 4b. Envío ofrecía la mayor libertad al más bajo costo. de acción Hasta el día de hoy, sigo pensando lo mismo, pero algo ha cambiado. Cada vez disponemos de menos tiempo para concretar nuestros proyectos, necesita- mos dar más valor agregado a los desarrollos que rea- 5b.Redireccionar lizamos y debemos adaptarnos más rápido a los cam- Mailer bios: lo que sucede es que nos están obligando a ser cada vez más productivos. Si hace algunos años que trabajan en ambientes web y no tienen la filosofía de reaprovechar los avances de [Figura 2] Diagrama que describe el funcionamiento de RoR. sus desarrollo de software en beneficio de los proyec- tos futuros, estarán siendo parte de la famosa “fábrica de ruedas”; es decir, estarán reinventando la rueda de fue desarrollado por completo con el lenguaje de programación Ruby. A pesar forma constante sin aprovechar la experiencia adqui- de que ustedes quizá usen Rails, en algún momento necesitarán escribir códi- rida con el pasar de los años. De esta forma, será im- go en el lenguaje Ruby. Por todas estas razones, es que el nombre combina am- posible ser “extremadamente productivo”. bas cosas: Ruby On Rails RoR está basado fuertemente en una estructura con persistencia de datos, pe- ¿Qué es Ruby On Rails? ro lo que nos debe importar es que las grandes bases de datos del Software Li- Como no debemos tener miedo a lo nuevo ni a los bre, como MySQL y PostgreSQL, se encuentran disponibles. cambios, y debemos estar informados y lograr hacer Su creador, el danés David Heinemeier Hansson (DHH), generó este frame- juicios de valor apoyados en experiencias reales y no work para cubrir las necesidades de desarrollo de un proyecto web, y fue ga- en meras suposiciones, me animé a experimentar con lardonado con el título Best Hacker 2005 en el evento O´Reilly Open Source otras alternativas. Awards, organizado por Google. Ruby On Rails, muchas veces abreviado como RoR, Según ha expresado en entrevistas, esta idea surgió de dos ámbitos de ex- significa “Rubí sobre Rieles” y, por definición, es un periencia al empezar a trabajar con RoR: PHP (rápido y sucio) y Java/J2EE framework Open Source para desarrollo rápido de (lento y limpio). El objetivo de RoR era tratar de unir lo mejor de ambos aplicaciones web. Si somos estrictos, veremos que el (rápido y limpio). nombre está compuesto por dos palabras clave: Ruby por El lenguaje de programación Ruby un lado y Rails por el otro. Vale decir que llegamos indirectamente al lenguaje. A pesar de que la ma- En realidad, el framework se yoría de las distribuciones GNU/Linux incluyen a Ruby (entre muchos otros llama, simplemente, Rails y lenguajes), hasta hace poco tiempo, éste no era muy popular. El autor de Ruby se llama Yukihiro Matsumoto, de origen japonés, más conocido por el seudónimo de Matz. Entre las cualidades de este lenguaje podemos mencionar que es totalmente [Figura 1] orientado a objetos (más que otros muy populares), de alto nivel y, sobre todo, Logo de Ruby On Rails. “divertido de programar” (según las palabras de su autor). 28 users.code
  • 2. 28-32 CODE26.internet.qxd 5/16/06 12:47 PM Page 29 Concepto base I: el patrón MVC Los Patrones de diseño evitan tener que reinventar la rueda para resolver problemas ampliamente conocidos y resueltos innumera- Person bles veces, a la vez que nos sirven de modelo para hacer soluciones lastName “reutilizables” y “extensibles”, porque aplican las mejores prácticas firstName del Diseño Orientado a Objetos. numberOfDependents Este framework se basa en un patrón de diseño muy conocido, el insert Modelo, Vista, Controlador (MVC). La idea del patrón es separar el update problema en tres capas: el modelo, que representa la lógica del sis- tema; la vista, que se encarga de mostrar la información del mode- getExemption lo; y el controlador, que toma las acciones del usuario del sistema isFlaggedForAudit e interactúa con el modelo y con la vista. getTaxableEarnings Nuestro sistema quedará estructurado en tres capas independien- tes, que tienen responsabilidades distintas y bien diferenciadas, con lo cual se logra que sea más fácil de desarrollar y de mantener. [Figura 3] Representación UML del patrón de diseño ActiveRecord. Concepto base II: el patrón ActiveRecord En Ruby On Rails, el Modelo del patrón MVC se implementa a tra- vés del mapeo del “objeto” con su correspondiente “tabla” en la ba- se de datos. Este patrón resuelve el eterno problema de la comunicación en- tre modelos de datos distintos, entre el Relacional y el Orienta- do a Objetos. ¿Cómo se instala? Existe mucha información en Internet, pero a veces, ésta puede ser inexacta o cometer pequeños errores. Si no tenemos experien- cia en RoR, es frustrante iniciarse con tanta dificultad extra. Instalación en Windows (tres pasos) El primer y mejor tutorial que existe hasta el momento para ha- cer una instalación es de O'Reilly: www.onlamp.com/pub/a/onlam- p/2005/01/20/rails.html (“Rodando con Rubí sobre Rieles”), pero sólo contempla el sistema operativo Windows. Por esa razón, va- mos a hacer una explicación que abarque ambas instalaciones, ya que, a pesar de que son muy parecidas, tienen pequeños detalles que se deben tener en cuenta. [Figura 4] Pantalla de instalación de Rubyinstaller, con las aplicaciones que incluye por defecto. > Paso 1: Instalar Ruby Bajamos el instalador de Ruby desde http://rubyinstaller.ruby- forge.org. Éste ya incluye Gems (http://rubygems.rubyforge.org), la Successfully installed rails-1.0.0 aplicación que permite instalar el framework Rails y que usaremos Successfully installed activesupport-1.2.5 en el paso siguiente. Successfully installed activerecord-1.13.2 Successfully installed actionpack-1.11.2 > Paso 2: Instalar Rails Successfully installed actionmailer-1.1.5 Si ya tenemos instalado Gems, sólo debemos abrir una ventana Successfully installed actionwebservice-1.0.0 que permita escribir comandos desde la línea. Desde la barra de ta- Installing RDoc documentation for reas, presionamos: activesupport-1.2.5... Installing RDoc documentation for Botón de Inicio-> Ejecutar -> y escribe “cmd” activerecord-1.13.2... [Mensaje resumido] Al presionar ENTER, se ejecutará una consola DOS que nos per- mitirá digitar los comandos del instalador del framework. Debere- Si no se agrega el último parámetro (“incluir dependencias”), por mos posicionarnos, primero, en el directorio donde instalamos cada software que falte, va a preguntar si queremos instalarlo, lo Ruby (acción realizada en el Paso 1): que sucede casi en seis oportunidades. cd c:rubybin > Paso 3: Instalar MySQL Al principio, no debemos complicarnos. Si lo que queremos es pro- C:rubybin>gem install rails --remote -- bar el entorno de desarrollo, cuando el instalador de MySQL nos include-dependencies pregunte por el usuario administrador, indicamos “root” y su clave “root”. Más adelante podremos asegurar todas estas configuraciones. Attempting remote installation of 'rails' Updating Gem source index for: Descarga del instalador MySQL: http://gems.rubyforge.org dev.mysql.com/downloads/mysql 29
  • 3. 28-32 CODE26.internet.qxd 5/16/06 12:47 PM Page 30 {internet | Ruby} Probar la instalación de RoR cd miproyecto En primera instancia, debemos tener disponible el co- ruby script/server mando rails desde nuestra consola. Para probarlo, nos posicionamos en un directorio donde alojaremos nues- El último comando ejecuta el servidor. Nuestro servidor atenderá el puerto tros proyectos web basados en RoR. En Windows, po- 3000. Si usamos el navegador y apuntamos a la dirección http://local- dremos crear la misma estructura a partir del “directo- host:3000 (localhost representa nuestro servidor local), nos deberá responder rio base”, llamado c:rails. un mensaje de bienvenida, como se observa en la [Figura 5]. Nuestro primer proyecto La primera aplicación útil Nos dirigimos al directorio base correspondiente a Para hacer una prueba del nuestro entorno “veloz” de desarrollo, qué mejor nuestro sistema, y ejecutamos el comando rails y el nom- que hacer “esa” actividad que se repite una y otra vez en nuestros sistemas, y bre del proyecto que deseamos crear. La idea es que el que el framework ya tiene sumamente resuelta: nuestro primer ABM (Altas, framework cree un subdirectorio con el nombre que in- Bajas y Modificaciones). gresamos y, luego, él armará una serie de subdirectorios Debemos crear la primera base de datos y la primera tabla. Ejecutamos nues- y archivos que corresponderán a la estructura inicial, pa- tro cliente de turno para trabajar con MySQL (existen muchos, pero podemos ra poder comenzar a trabajar en nuestro proyecto RoR: bajar los oficiales desde www.mysql.com/products/tools), y creamos la base de datos “miproyecto” y la tabla “cliente”, con la siguiente estructura: rails miproyecto CREATE TABLE `miproyecto`.`clientes` ( Esto producirá la siguiente salida por pantalla: `id` int(3) NOT NULL auto_increment, `nombre` varchar(45) default NULL, create `telefono` varchar(45) default NULL, create app/controllers PRIMARY KEY (`id`) create app/helpers ) ENGINE=InnoDB DEFAULT CHARSET=latin1; create app/models create app/views/layouts Tenemos que definir cuál es la configuración de nuestra base de datos, edi- create config/environments tando, en Windows, el siguiente archivo: C:railsmiproyectoconfigdataba- create components se.yml. A continuación, modificamos el nombre de la base, agregamos la cla- create db ve del usuario y comentamos la línea “socket”: create doc create lib development: create lib/tasks adapter: mysql create log database: miproyecto create public/images username: root [Mensaje resumido] password: root #socket: /path/to/your/mysql.sock Entramos en el directorio de nuestra aplicación y ejecu- tamos un mini servidor web para probar que el entorno Si queremos ir rápido y seguro, podemos usar los “andamios” (scaffolding). RoR esté respondiendo: Scaffold es un veloz generador de CRUD: Create, Retrive, Update y Delete, lo que significa, en castellano, un ABM. Posicionados en el directorio base del proyecto, ejecutamos el comando para generar el modelo: C:rails>cd miproyecto C:railsmiproyecto>ruby scriptgenerate scaffold Cliente exists app/controllers/ exists app/helpers/ exists app/views/clientes exists test/functional/ dependency model exists app/models/ exists test/unit/ exists test/fixtures/ create app/models/cliente.rb create test/unit/cliente_test.rb create test/fixtures/clientes.yml create app/views/clientes/_form.rhtml [Mensaje resumido] Nota: si al efectuar los cambios en el código, éstos no se ven reflejados en [Figura 5] Pantalla de bienvenida que nos devuelve el servidor web WEBrick (a pesar de restaurar el navegador), deberemos rei- el servidor WEBrick, confirmando que todo fue niciar el servidor para verlos. http://127.0.0.1:3000/clientes instalado y configurado correctamente. 30 users.code
  • 4. 28-32 CODE26.internet.qxd 5/16/06 12:47 PM Page 32 {internet | Ruby} Si presionamos sobre New Client, podremos crear nuevos clientes. Luego de agregar el primero, aparecerá la lista de los ingresados en el sistema, junto con tres nuevas operacio- nes que se aplican sobre nuestro ítem: Show, Edit y Destroy (Mostrar, Editar, Destruir). Está de más decir que absolutamente toda la información que vemos, y su comporta- miento, puede modificarse según nuestras necesidades. La “cereza de la torta”: pulir la castellanización Como forma de entrar rápidamente en otro tema, para traducir a nuestro idioma los tex- tos de la aplicación (que, en un principio, son generados en inglés), deberemos editar las [Figura 6] Pantalla principal “plantillas” (templates) de código html. Como estamos dentro del patrón MVC, éstas se en- de nuestro CRUD, desarrollada contrarán en la capa que representa la vista (tema explicado en la introducción al patrón), a través de scaffolding. dentro del directorio de nuestro proyecto y con la extensión .rhtml: C:railsmiproyectoappviewsclientesedit.rhtml Aquí podremos modificar todos los textos que están a la derecha de link_to, como: <%= link_to 'Back', :action => 'list' %> Cambiando por: <%= link_to 'Volver', :action => 'list' %> Si queremos que este comportamiento sea permanente –es decir, que cada vez nuestro sistema genere el código del “andamio”–, deberemos modificar las plantillas del frame- work, ubicadas en: [directorio_instalación_ruby]librubygems1.8gemsactionpack-1.11.2lib [Figura 7] La opción New Client action_controllertemplatesscaffolds nos permite hacer nuestra primera Alta. Conclusión Los expertos dicen que desarrollar con este framework permite crear una aplicación web, al menos, diez veces más rápido que con una herramienta similar en Java. Parte del secreto está en el lenguaje de programación Ruby, en los Patrones de Diseño utiliza- dos y en la filosofía de trabajo que sigue principios de Desarrollo ágil. ¿Será el Santo Grial que estábamos buscando? Aún no tenemos la respuesta, pero el “lado bueno de la fuerza” está fluctuando hacia Ruby On Rails y, gracias a su popularidad, muchos otros proyectos de frameworks para desarrollo web están tomando fuerza; se puede decir que estamos en- trando en “la Era” (¿o la moda?) de este tipo de estrategias de desarrollo. Por lo pronto, recomendamos empezar a conocerlo y a probarlo en ambientes “cerrados” (como una aplicación para una Intranet), poner en práctica todas las operaciones clásicas [Figura 8] Luego de ingresar el primer de ABM y, progresivamente, implementar el resto de nuestros requerimientos para ir su- cliente, tenemos acceso a las opciones mando experiencia en el framework y en este peculiar lenguaje de programación. de modificar o dar de baja. Y el tiempo dirá si esto es una moda o si llegó para destronar a PHP, o tal vez, al mis- mo lenguaje Java con toda su parafernalia. q Enrique Place es Consultor en Tecnologías de la Informa- ción, especializado en Free Software y Open Source desde 1997. Ha participado en varios proyectos gubernamentales y privados uruguayos, donde estas tecnologías fueron un fac- tor clave para el desarrollo de sistemas. En la actualidad, está participando en un proyecto de eGovernment (www.comprasestatales.gub.uy), investigando sobre Ruby On Rails y dictando cursos sobre Programación PHP5 y Patrones de Diseño, en universidades locales. [Figura 9] Finalmente, así se vería Ruby tiene lo mejor de otras la página principal de nuestro ABM tecnologias y eso hace que de Clientes, después de ingresar muchos opten por él. varios registros. 32 users.code