JavaFree.org | RubyOnBr.org

Modularizar uma aplicação Rails

Acompanhar Modularizar uma aplicação Rails 5 posts, 3 participantes

Avatar Fernando Luizão 1863 posts

Olá pessoal,

Já faz um tempo que acompanho o fórum, aprendi muito lendo os posts aqui =).

Minha dúvida é sobre a melhor maneira de modularizar uma aplicação web. Esse tópico e o artigo do Akita (A dieta dos controllers) me deram algumas idéias, mas ainda estou com dúvidas… pretendo separar a aplicação em pedaços (alguns independentes, mas a maioria depende de outros módulos) e no momento do deploy, juntar tudo isso, selecionando apenas os módulos desejados. No tópico que eu citei, foi citado uma solução com gems, porém não sei se seria possível fazer uma gem com uma aplicação inteira (controllers + models + views).

Não gostaria de integrar tudo com webservices (não conheço muito sobre Drb, mas acredito que o resultado final seja praticamente o mesmo) para não deixar o sistema lento.

A idéia de desenvolver partes da aplicação como plugins me pareceu boa também, mas não consegui pensar numa maneira de estruturar a aplicação =(.

Outra coisa que me pareceu legal foram os ActiveResources, mas ainda não pesquisei muito sobre isso e não sei se seria adequado…

Bom, não sei se alguém já pensou em como montar uma arquitetura desse tipo, e também nao sei se consegui explicar direito o que eu pretendo… mas se alguém puder me dar uma idéia ou opinião sobre como fazer isso, agradeço demais =)

Abraços

 
Avatar Akita On Rails 298 posts

Assista a este screencast e este outro.

 
Avatar Fernando Luizão 1863 posts

Akita, obrigado pelos screencasts, me deu uma boa idéia sobre ActiveResources. Mas não é bem isso que eu quero fazer, não pretendo (pelo menos nessa fase do projeto) criar os módulos como aplicações separadas e depois integrar como se fosse SOA. Minha idéia inicial era separar em módulos na hora do desenvolvimento, mas na hora do deploy, os módulos selecionados seriam uma única aplicação. Não sei se consegui explicar direito… Queria que fosse tipo um LEGO, vc vai colocando as peças e no final tem uma peça única =).

 
Avatar Neves 162 posts

Blz Luizao!? Vou aproveitar que o assunto também me interessa:

Já ouvi mais pessoas reclamando sobre esta característica do Rails, que dificulta vc trabalhar com módulos distintos e funcionais isoladamente, mas que seja possível integrá-los também.
Este parece ser uma forma de contornar isso: http://rails-engines.org/

O meu caso é o seguinte. Estou fazendo um sistema para uma escola e uma parte deste sistema é o financeiro. Mas gostaria de fazer o financeiro como um sub-produto, como se fosse uma dll no Delphi ou um jar no Java.

Não queria misturar os arquivos de um com o do outro. A alternativa mais fácil que pensei foi fazer duas aplicações separadas fisicamente, e uma conversa com a outa através do ActiveResource. Como estarão na mesma máquina, acredito que não terá uma performance tão menor como se tivesse acesso direto ao banco da outra.

Alguém já fez algo assim?

 
Avatar Fernando Luizão 1863 posts

Olá Neves,

Meu caso é bem parecido com o seu =). Eu tinha dado uma olhada no Rails Engines, e achei muito interessante, mas fiquei meio com medo de algum dia o plugin ser descontinuado. De qualquer forma, vou dar uma olhada com mais calma no plugin e fazer alguns testes. Qualquer avanço eu posto aqui.

E uma solução com gems, será que é viável?