Site Scaffold

Posted by Daniel Lopes on 22/06/2009

Trabalhamos muito criando websites, e muitas vezes estes projetos não são voltados para empresas de TI ou que tenham um setor de TI, então também desenvolvemos um backend simples para os próprios clientes administrarem o conteúdo dos sites.

Ok, existem centenas de CMS e no mundo Rails existem alguns muito bons como o Radiant, BrowserCMS e AdvaCMS porém, todos estes CMS’s acabam sendo mais complexos do que o necessário para um projeto onde teremos apenas um catálogo de produtos e gerência de novidades.

Não faz sentido tentar ensinar um cliente que poderá criar grupos de usuários, tags, que poderá organizar as páginas em sub-páginas e etc. Simplesmente ele não vai entender, não vai usar e logo não vai gostar do nosso serviço.

Por este motivo prefiro criar o backend da forma mais simples possível, o problema é que sempre fico criando várias coisas que são praticamente padrão em todos os projetos.

Coisas como

  • posts (ou notícias), onde o cliente vai inserir noticias com fotos e paginação.
  • produtos, um catalógo listado em forma de grid com mais detalhes do produto e fotos (semelhante a exibição de um Submarino.com).
  • login, logout, signup, layout do admin.
  • formulário de contato.

Então a bastante tempo (deve ter uns 2 anos) criei um plugin chamado SiteScaffold com o único objetivo de gerar as coisas acima, um generator simples do Rails para cada um dos tópicos acima.

Nada complexo, mas algo com que eu possa dar continuidade e desenvolver mais sobre o que foi gerado.

O resultado disto está em http://github.com/danielvlopes/site_scaffold/tree/master

E para gerar cada coisa basta:

  • script/generate admin_base
  • script/generate posts
  • script/generate contact_form
  • script/generate products_catalog

Dependendo do generator chamado (não se preocupe, ao executar cada um é exibido os passos a serem seguidos) é adicionado as abaixo dependências :

  • restful_authentication
  • paper_clip
  • will_paginate
  • jrails
  • validatable

Como uso RSpec em todos os meus projeto não inseri nada sobre testes no plugin, pois acho que deve ser feito em Test::Unit pois nem todos usam Rspec mas Test::Unit pode ser executado dentro do Rspec. Então se alguém se habilitar a criar os test cases para o que é gerado pelo plugin seria ótimo.

Também pretendo alterar de restful authentication para authlogic, então qualquer ajuda neste ponto também será bem útil.

blog comments powered by Disqus