Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introducción a Merb Framework

Introducción a Merb Framework

Una introducción breve y práctica a Merb Framework.

Avatar for Andrés Cabrera

Andrés Cabrera

November 10, 2012
Tweet

Other Decks in Technology

Transcript

  1. Introducción a Merb Framework Isidoro Schmunck [email protected] Andrés Cabrera [email protected]

    http://www.merbivore.com Universidad de Palermo, 2012 Arquitectura Web Prof. Carla Ares
  2. Que es Merb? Merb es un marco de desarrollo de

    software hecho en Ruby, y es más modular que Rails; es más pequeño, y diseñado con énfasis en el desempeño. "A medida que desarrollamos en Merb, nos concentramos en su desempeño y modularidad. Rails incluye unas 80 mil líneas de código; el núcleo de Merb tiene solamente 6 mil líneas de código. Hay más módulos y podrás usar tantos o tan pocos como quieras. Merb envía respuestas a solicitudes más rápidamente que Rails, y es mucho más fácil de entender y adaptar."
  3. Nacido de un Pastie (http://pastie.org/14416) de Esdras Zygmuntowicz el 9

    de septiembre de 2006. Constaba en ese entonces con sólo 120 líneas de código fuente. Se buscó en sus origenes el renderizado rápido de las plantillas de Ruby, con el footprint de memoria más pequeño posible. Para ello, utilizó sólo dos gemas, Mongrel y ERB, que, sirvieron como raiz de su propio nombre: Merb. Historia
  4. Cuando usar Merb • Si vas a comenzar un nuevo

    desarrollo: Rails 3. Merb 1.x sobre Rails < 3, cuando: • Estas escribiendo una herramienta pequeña. • Tenés limitaciones de requerimientos de memoria. • Te gusta probar nuevos ORM's. • Buscas alta performance. • Tu equipo de desarrollo tiene espiritu hacker.
  5. Los plugins en Merb se implementan como gemas simples, que

    se distribuyen en la cuenta de merb de GitHub y por otras también. Por esto pueden tomar ventaja del control de versiones de RubyGems y el control de dependencias. Se pueden instalar en el repositorio del sistema o empaquetar en el directorio de las gemas en la distribución de una aplicación, las aplicaciones de Merb sólo tienen que añadir la carpeta /gems como un repositorio alternativo. Los Plugins ya incluyen soporte para ActiveRecord, DataMapper, y la SQL, con soporte para transacciones, generación de modelo, database.yml y más. Plugins
  6. Controllers & Mailers Se componen de dos componentes. En primer

    lugar, un AbstractController, que se ocupa de búsqueda del Template y el Layout, asignación de las variables de instancia, y filtros before/after. En segundo lugar, un Merb::Controller, que se encarga de la semántica de request/ response. Debido a que los componentes son independientes, es posible heredar de AbstractController, lo cual Merb hace para Mailers y Parts. Poseen un excelente soporte de la negociación de Content-Type. Podes especificar en los controladores, o en acciones individuales, que tipos MIME deberían ser soportados de la forma: provide :xml, provide :html, etc. Una vez que la información es proporcionada, el controlador tiene un número de maneras para obtener automáticamente el contenido apropiado. Si una plantilla llamada foo.html.erb existe, automáticamente se renderizará para todo el tipo text/html, y así sucesivamente.
  7. Se implementan sobre la clase AbstractController, así que tienen todo

    el comportamiento de un controlador por defecto (incluidas las plantillas, asignaciones, y filtros before/after). Pero en lugar de llamar a render, se llama a render_mail, que tiene opciones como: render_mail: html =>: foo,: text =>: bar. Una gran cantidad de opciones están soportadas, incluyendo archivos adjuntos a través de un método #attach, para que usted pueda construir sus correo electrónico como multi-part, con archivos adjuntos y layouts de manera bastante trivial. Tienen su propio directorio raíz, que contiene clases controlador en su interior, así como un directorio Views (que contiene los diseños, al igual que un controlador normal), y un directorio de Helpers opcional. Debido a que AbstractController puede especificar su raíz de Layout de forma trivial, es fácil crear nuevos clases controlador y dejarlos ahí. Los Mailers son llamados desde un controlador normal a través de send_mail Klass, :action, :options, donde las opciones es un hash de opciones tales como from, to, subject, y cc. Mailers
  8. Requisitos Paciencia y Tiempo! Servidor Linux ó Windows Ruby &

    RubyGems Un servidor Ruby - http: (Mongrel, Thin, WebRick) Un servidor web: (Apache con Passenger, Nginx)
  9. Iniciar Merb Ejemplo: $ merb -a ADAPTER -p PUERTO -e

    ENTORNO $ merb -a thin -p 4000 -e development
  10. Configuraciones merb-blog-crud/config/init.rb ORM / Template Engine / Testing merb-blog-crud/config/dependencies.rb merb-blog-crud/Gemfile

    merb-blog-crud/Gemfile.lock Dependencias del Proyecto Dependencias usando bundler merb-blog-crud/config/router.rb Ruteo de Actions (RestFull Compl.) merb-blog-crud/config/rack.rb Configuraciones de Rack merb-blog-crud/config/database.yml Configuraciones de DataMapper ORM
  11. Despliegue en la nube Usaremos en esta ocasión el servicio

    CloudFoundry de VMWare. Nos registramos en el sitio http://www.cloudfoundry.com El servicio nos provee de una gema VMC para la adminitración de este. $ gem install vmc Migramos la base de datos a producción $ rake db:automigrate MERB_ENV=production Despliegue interactivo (Estando ubicados en el directorio del proyecto) $ vmc push VMC nos guía a través de las configuraciones básicas y nuestra aplicación estará lista e iniciada en la URL especificada, en nuestro caso: http://merb-blog-crud.cloudfoundry.com