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.
5 Comentários to “Site Scaffold”
AkitaOnRails diz:
23/06/2009 em 02:36 PM
Você pode criar um template de projetos (http://m.onkey.org/2008/12/4/rails-templates) que é um jeito de criar um novo projeto (usando o bom e velho comando ‘rails’ mas já executando um monte de coisas que você sempre faz em todo projeto.
Também concordo que em muitos casos, é tão simples criar um ‘CMS’ básico em Rails do zero que não compensa usar um backend inteiro cheio de features que você nunca vai usar.
Daniel lopes diz:
23/06/2009 em 02:44 PM
Opa, olá Akita.
O problema que com templates do Rails você consegue executar bem comandos rake, terminal, cria repo git, instalar gems e etc.
Mas templates no Rails não são bons para por exemplo gerar os models, inserir códigos neles que fazem o upload de imagens, associações, acrescentar código JS que vai criar campos no dom, criar views e etc.
Os templates Rails não são bons para isto pois seria um tanto de código gigante tudo acoplado em um arquivo só.
Sem contar que em alguns projeto só quero o form de contato e outro só os posts aí posso instalar o plugin rodar os generators e depois remover.
Por este motivo ainda prefiro generators para estes casos do que templates Rails.
Marcos Neves diz:
23/06/2009 em 04:01 PM
Uma outra ideia é utilizar o recurso novo de engines do Rails 2.3 Eu estou utilizando aqui. Nao eh muito bom durante o desenvolvimento pois eh preciso reiniciar o servidor quando altera algum codigo ruby no plugin. Outro problema são as migrations e gems que precisam ser configuradas na aplicacao principal. Espero que eles achem algum solução para isso logo.
Daniel Lopes diz:
24/06/2009 em 09:02 AM
@Marcos, também não considero engines para estas situações pois a idéia é apenas ter o ponta-pé inicial para continuar o desenvolvimento do projeto e não ter um sistema completo rodando de fora da pasta App.
Ronaldo C Schork Jr. diz:
24/06/2009 em 10:48 AM
Muito legal Daniel. Vai ser bastante útil para mim que estou desenvolvendo um site que tem uma área de administração de produtos e notícias. ;-)
Abraço.
Comentário
CATEGORIAS
HomeDesign
SEO
Empreendimento
Cifras
Ruby e Rails
Flex
Photoshop
Flash
XHTML/CSS
JavaScript
Variados
Database
Firefox
Projetos
3D
Projetos
TextMate
Smalltalk
Mac
Livros
ARQUIVO
03/2010 (2)02/2010 (7)
01/2009 (4)
12/2009 (7)
11/2009 (4)
10/2009 (10)
09/2009 (7)
08/2009 (6)
07/2009 (12)
06/2009 (5)
05/2009 (6)
04/2009 (9)
03/2009 (14)
02/2009 (18)
01/2009 (14)
12/2008 (20)
11/2008 (18)
10/2008 (9)
09/2008 (12)
08/2008 (6)
07/2008 (12)
06/2008 (10)
05/2008 (15)
04/2008 (19)




GAIA, o maior amigo do programador Flash
comentado por criação de sites
Seja produtivo consumindo tomates
comentado por Gabriel Sobrinho
Cifras: novas funcionalidades
comentado por Juarez P. A. Filho
Cifras: novas funcionalidades
comentado por Mário Santos
Ganhador da promoção
comentado por Juarez P. A. Filho