Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
http://www.merbivore.com
Universidad de Palermo, 2012 Arquitectura Web Prof. Carla Ares Isidoro Schmunck
toti.schmunck@gmail.com
Andrs Cabrera
andrescabrera20@gmail.com
Que es Merb?
Merb es un marco de desarrollo de software hecho en Ruby, y es ms modular que Rails; es ms pequeo, y diseado con nfasis en el desempeo. "A medida que desarrollamos en Merb, nos concentramos en su desempeo y modularidad. Rails incluye unas 80 mil lneas de cdigo; el ncleo de Merb tiene solamente 6 mil lneas de cdigo. Hay ms mdulos y podrs usar tantos o tan pocos como quieras. Merb enva respuestas a solicitudes ms rpidamente que Rails, y es mucho ms fcil de entender y adaptar."
Historia
Nacido de un Pastie (http://pastie.org/14416) de Esdras Zygmuntowicz el 9 de septiembre de 2006. Constaba en ese entonces con slo 120 lneas de cdigo fuente. Se busc en sus origenes el renderizado rpido de las plantillas de Ruby, con el footprint de memoria ms pequeo posible. Para ello, utiliz slo dos gemas, Mongrel y ERB, que, sirvieron como raiz de su propio nombre: Merb.
Estas escribiendo una herramienta pequea. Tens limitaciones de requerimientos de memoria. Te gusta probar nuevos ORM's. Buscas alta performance. Tu equipo de desarrollo tiene espiritu hacker.
Plugins
Los plugins en Merb se implementan como gemas simples, que se distribuyen en la cuenta de merb de GitHub y por otras tambin. 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 distribucin de una aplicacin, las aplicaciones de Merb slo tienen que aadir la carpeta /gems como un repositorio alternativo. Los Plugins ya incluyen soporte para ActiveRecord, DataMapper, y la SQL, con soporte para transacciones, generacin de modelo, database.yml y ms.
Mailers
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 estn soportadas, incluyendo archivos adjuntos a travs de un mtodo #attach, para que usted pueda construir sus correo electrnico como multi-part, con archivos adjuntos y layouts de manera bastante trivial. Tienen su propio directorio raz, que contiene clases controlador en su interior, as como un directorio Views (que contiene los diseos, al igual que un controlador normal), y un directorio de Helpers opcional. Debido a que AbstractController puede especificar su raz de Layout de forma trivial, es fcil crear nuevos clases controlador y dejarlos ah. Los Mailers son llamados desde un controlador normal a travs de send_mail Klass, :action, :options, donde las opciones es un hash de opciones tales como from, to, subject, y cc.
Generadores
$ merb-gen --help
Instalacin
Requisitos
Paciencia y Tiempo! Servidor Linux Windows Ruby & RubyGems Un servidor Ruby - http: (Mongrel, Thin, WebRick) Un servidor web: (Apache con Passenger, Nginx)
Instalacin de Merb
Instalacin de Mongrel
Un ABM en Merb
https://github.com/xdite/merb-blog-crud
Clonando el Repositorio
Dependencias
$ vim Gemfile.rb (usando Bundler)
Iniciar Merb
Ejemplo: $ merb -a ADAPTER -p PUERTO -e ENTORNO $ merb -a thin -p 4000 -e development
Probando en el Browser
http://localhost:4000/
Un vistazo al cdigo
Vistas
$ vim app/views/blogs/index.html.erb
Vistas
$ vim app/views/blogs/show.html.erb
Controladores
$ vim app/controllers/blogs.rb
Modelo
$ vim app/models/post.rb
Configuraciones
merb-blog-crud/config/init.rb
merb-blog-crud/config/router.rb
merb-blog-crud/config/rack.rb
Configuraciones de Rack
merb-blog-crud/config/database.yml
Despliegue en la nube
Usaremos en esta ocasin el servicio CloudFoundry de VMWare. Nos registramos en el sitio http://www.cloudfoundry.com El servicio nos provee de una gema VMC para la adminitracin de este. $ gem install vmc Migramos la base de datos a produccin $ rake db:automigrate MERB_ENV=production Despliegue interactivo (Estando ubicados en el directorio del proyecto) $ vmc push VMC nos gua a travs de las configuraciones bsicas y nuestra aplicacin estar lista e iniciada en la URL especificada, en nuestro caso: http://merb-blog-crud.cloudfoundry.com
Links
http://www.merbivore.com http://datamapper.org/getting-started.html http://gembundler.com/ http://gembundler.com/rationale.html
Preguntas?