Publicado por Rafael Rosa em 15 de December de 2009

Pancake – Como empilhar e acoplar aplicações baseadas em Rack

stack-o-pancakesBoa parte das vantagens do Merb foram integradas ao Rails 3, mas Daniel Neighman, que já trabalhou na Engine Yard, começou um novo projeto visando repetir a idéia do Merb Slices. Desde então, ele levou ao extremo a idéia de empilhar aplicações baseadas em Rack, criando um framework para isso, o Pancake.

Segundo Daniel, "aplicações web devem ser aplicativos rack completamente independentes, capazes de funcionar como gems, de conterem uma aplicação completa que possa ser montada dentro de outra, de serem herdadas e de cuidar dos detalhes de implementação", e também "permite que você crie seu próprio tipo de aplicação quando necessário". O Pancake consegue fazer isso usando outros excelentes projetos, incluindo o Tilt para templating, o Usher para roteamento, e o Hashie que altera os hashes do Ruby para deixá-los com funcionalidades parecidas às de objetos completos. A idéia básica é montar pilhas de aplicações que podem ser acopladas dentro de outros projetos (pancake == panqueca, pilha de panquecas, sacou? :) ).

Juntando aplicações com Rails (E misturando todas elas...)

Yehuda Katz usou o Usher no seu artigo Como colocar uma aplicação em Sinatra dentro do Rails 3 (em inglês) e ele foi utilizado no desenvolvimento do Pancake para garantir que qualquer coisa que você construa seja acoplavel ao Rails 3. Aplicações construídas com Pancake podem ser utilizadas com as versões atuais do Rails através do Metal, veja exemplos de como fazê-lo no blog oficial.

Aplicações em Sinatra são montáveis usando ele, assim como qualquer outro componente que utilize Rack, e middlewares em Rack podem ser utilizados tanto para uma pilha de aplicações Pancake quanto para uma aplicação individual. Essas pilhas podem ser transformadas em gems, que podem ser herdadas por outras aplicações ou pilhas. Esse monte de opções pode parecer assustador e cheirar à bagunça garantida, mas ele usa namespaces para manter as camadas separadas.

Instalação e uso

Para começar a utilizá-lo, bastou instalá-lo com:

sudo gem install usher rake pancake haml rcov rack-test rspec racksh

Depois criei uma pilha com:

sudo pancake-gen short ri_example    ## pancake-gen {short || micro} 

Para saber mais, veja os seguintes projetos: Pancake Blog (ferramenta básica de blog acoplável) e CouchDB Proxy (um proxy para couchdb acoplável).

Deixe um Comentário