Rinaldi Fonseca

Organize sua aplicação Rails

19 de novembro de 2011

Rails é um framework MVC e ao criar uma nova aplicação, os diretórios models, views e controllers são criados automaticamente. Será que precisamos apenas destes diretórios?

Eu acredito que não.
Pelo fato do framework, de certa forma guiar o nosso desenvolvimento, na maioria das vezes seguimos o padrão proposto e nos esquecemos de que podemos modificar algumas coisas.

Trabalhando em consultorias, tenho a oportunidade de “colocar a mão” em muitos projetos. Em grande parte deles, o código escrito parecia ter sido obrigado a se “encaixar” em um dos 3 diretórios citados acima.

A questão é: nem tudo na sua aplicação é um model, um controller ou uma view. Logo não faz sentido inserir seu código lá.

Na aplicação que trabalho atualmente tenho a seguinte estrutura dentro do diretório app:

  • adapters
  • assets
  • controllers
  • helpers
  • mailers
  • models
  • observers
  • presenters
  • uploaders
  • validators
  • views
  • workers

Não tenha receio de acrescentar outros diretórios em sua aplicacão achando que você está saindo do padrão. A nova onda na comunidade é falar sobre SOLID e seguindo alguns destes princípios ajudará na organização.

Uma outra prática que costumo seguir em aplicações quem possuem um grande número de models por exemplo, é separá-los em subdiretórios dentro de app/models. Não preciso criar namespaces para isso. Basta acrescentar o novo diretório no load path da aplicação.

Se a sua aplicação possui vários domínios, faz sentido organizar desta forma.

5 Comentários »

  1. Não curto muito organizar o projeto por “design patterns” nas pastas. Gosto da ideia do java, eu costumo separar pro domain já na app.

    app/billing
    app/reports
    app/sitemap
    etc.

    Comentário por Vinicius B. Fuentes — 21 de novembro de 2011 @ 14:20

  2. Dependendo da quantidade de domínios eu também faço isso. E dependendo do tamanho do domínio eu faço por exemplo: app/billing/adapters

    Comentário por Rinaldi Fonseca — 21 de novembro de 2011 @ 15:29

  3. app/modes? não é app/models? :D

    Comentário por agaelebe — 26 de dezembro de 2011 @ 23:15

  4. Valeu Hugo! Corrigido!

    Comentário por Rinaldi Fonseca — 26 de dezembro de 2011 @ 23:19

  5. Parabéns meu, um post melhor que o outro,
    animal!

    Comentário por Vinícius — 6 de março de 2012 @ 16:56

Feed RSS dos comentários deste post URL de TrackBack

Deixe um comentário

Spam protection by WP Captcha-Free