Features - Boas Práticas

82 views
Skip to first unread message

Fábio Martinelli

unread,
Nov 23, 2012, 9:10:25 PM11/23/12
to drup...@googlegroups.com
Oi Pessoal

Estou estudando aqui para fazer o lançamento das primeiras versões do site, seguindo esse esquema de site de desenvolvimento, staging e produção
Acompanhei legal esse texto para poder organizar os módulos em suas pastas separadas


Agora tenho uma dúvida, como vocês exportam suas Features? O que aconselham a fazer?
Uma Feature contendo toda a parte de views, campos, menus, configurações?
Estou pensando em fazer separado uma Feature praticamente exportando as configurações do site pelo Strongarm e outra Feature com meu conteúdo, com os campos, views etc

Como vocês fazem?

Valeu

Joel Wallis

unread,
Nov 24, 2012, 6:14:57 AM11/24/12
to drupal-br
Fábio, antes de tudo: código é software, banco é conteúdo.

Evite exportar conteúdo para uma feature (salvo em casos que o conteúdo faz parte de uma funcionalidade - ex: conteúdo de exemplo). Mantenha em feature apenas o que faz parte da estrutura do site (tipos de conteúdo, campos, contextos, views, etc).

Eu costumo criar uma feature para cada funcionalidade do site e centralizar tudo nessa feature. Eu escrevi um pouco disso aqui, onde também falo sobre Git, Gitflow e outras coisas:


--
Ao responder um tópico, reproduza apenas a parte relevante da mensagem original, apagando demais partes e assinaturas.
 
Para cancelar a inscrição deste grupo: drupal-br+...@googlegroups.com
Para ver mais opções: http://groups.google.com/group/drupal-br?hl=pt-BR_BR?hl=pt-BR



--
Joel Wallis

Fábio Martinelli

unread,
Nov 24, 2012, 2:06:33 PM11/24/12
to drup...@googlegroups.com
Oi Joel

Eu já tinha lido esse post, muito bom, e estou seguindo praticamente tudo o que você recomenda lá, estou usando o Features e Strongarm para exportar do banco para o código, estou usando o drush para atualizar tudo que preciso no drupal e também usando o git com o bitbucket para deixar o código tudo belezinha

Mas isso tudo é novo pra mim, não sou programador, vim do Joomla, e praticamente estou me encaixando mais nesse perfil de site builder e estou em meu primeiro projeto, praticamente migrando um site do Joomla para o Drupal, com alguns recursos e funcionalidades diferentes.

Quando eu disse conteúdo, queria me referir a estrutura mesmo

Ai a dúvida surgiu: 
Crio uma Feature contendo toda essa estrutura, além das views e campos que defini para meu tipo de conteúdo, uso também para exportar configurações como Menus, Site Name, e outras variáveis

Ou uso isso separando, criando uma Feature para Views e Tipos de Conteúdo, uma outra Feature contendo menus, Site Name, User Roles, etc

Nessa minha primeira brincadeira eu tinha feito uma Feature com as configurações e fiz outra com views, campos e acabei colocando menus lá também e deu Conflict

Ai cheguei nesse ponto ..

Quero fazer tudo certinho para não ter problemas no futuro, e poder testar, melhorar, ampliar, exportar.. sem para o site de produção e sem bagunçar tudo

valeu


Em sábado, 24 de novembro de 2012 09h15min38s UTC-2, Joel Wallis escreveu:
Fábio, antes de tudo: código é software, banco é conteúdo.

Evite exportar conteúdo para uma feature (salvo em casos que o conteúdo faz parte de uma funcionalidade - ex: conteúdo de exemplo). Mantenha em feature apenas o que faz parte da estrutura do site (tipos de conteúdo, campos, contextos, views, etc).

Eu costumo criar uma feature para cada funcionalidade do site e centralizar tudo nessa feature. Eu escrevi um pouco disso aqui, onde também falo sobre Git, Gitflow e outras coisas:

-- 
Joel Wallis

Joel Wallis

unread,
Nov 24, 2012, 3:05:54 PM11/24/12
to drupal-br
Massa! Que bom ver que alguém que está começando agora no Drupal já está seguindo um caminho produtivo e sustentável :)

Sobre a organização do seu projeto, sugiro manter seu desenvolvimento separado por funcionalidades (ex: áreas do site). Quais as funcionalidades do projeto? Você tem uma seção Contato, com recursos específicos (e-mail, etc)? Crie um feature pra isso e ponha tudo relacionado à essa seção lá (configuração, view, contexto, tipo de conteúdo, etc). Você tem uma seção Blog, com moderação de comentários e notificação via e-mail? Crie uma feature pra isso.

Além das funcionalidades você pode (e deveria) criar uma feature em que nela você controlará configurações referentes ao projeto (ex: nome do site, e-mail do site, configurações de arquivos públicos e privados, etc). Essa feature será "o coração do seu projeto." Vocẽ pode até controlar alterações referentes ao projeto em si através de install/update hooks.

Aqui fala bem legal sobre um workflow baseado em features:

Talvez isso seja um pouco confuso de entender, mas muita coisa foi documentada no blog da Nuvole. Aliás, uma ótima fonte de informação é a tag Code Driven Development do blog deles:

Essa cheatsheet também vai te ajudar:


--
Ao responder um tópico, reproduza apenas a parte relevante da mensagem original, apagando demais partes e assinaturas.
 
Para cancelar a inscrição deste grupo: drupal-br+...@googlegroups.com
Para ver mais opções: http://groups.google.com/group/drupal-br?hl=pt-BR_BR?hl=pt-BR



--
Joel Wallis

Fábio Martinelli

unread,
Nov 27, 2012, 9:04:35 PM11/27/12
to drup...@googlegroups.com
Joel

Estou tentando seguir isso tudo,
um passo que eu fiz que acho que foi certo foi isso, eu baixava os módulos e testava no ambiente dev 
ai exportei as features e todos os módulos via git para o ambiente de produção

Depois que ficou tudo belezinha, eu fiz um backup e migrate e exportei todo o site e banco de dados para o ambiente de DEV
ai foi só ajustar algumas configurações e tenho meu ambiente de dev com conteúdo real e atualizado, e praticamente clone das funcionalidades do PROD

ai posso brincar de novo de testar módulos e funcionalidades

Estou gostando dessa brincadeira!

abs


Em sábado, 24 de novembro de 2012 18h06min38s UTC-2, Joel Wallis escreveu:
Massa! Que bom ver que alguém que está começando agora no Drupal já está seguindo um caminho produtivo e sustentável :)

Sobre a organização do seu projeto, sugiro manter seu desenvolvimento separado por funcionalidades (ex: áreas do site). Quais as funcionalidades do projeto? Você tem uma seção Contato, com recursos específicos (e-mail, etc)? Crie um feature pra isso e ponha tudo relacionado à essa seção lá (configuração, view, contexto, tipo de conteúdo, etc). Você tem uma seção Blog, com moderação de comentários e notificação via e-mail? Crie uma feature pra isso.

Além das funcionalidades você pode (e deveria) criar uma feature em que nela você controlará configurações referentes ao projeto (ex: nome do site, e-mail do site, configurações de arquivos públicos e privados, etc). Essa feature será "o coração do seu projeto." Vocẽ pode até controlar alterações referentes ao projeto em si através de install/update hooks.
--
Joel Wallis

Joel Wallis

unread,
Nov 27, 2012, 9:27:52 PM11/27/12
to drupal-br
Legal, cara! Parabéns!

Próximo passo: usar Git para gerenciar isso. Você vai ter um controle duka no seu projeto! :)


--
Ao responder um tópico, reproduza apenas a parte relevante da mensagem original, apagando demais partes e assinaturas.
 
Para cancelar a inscrição deste grupo: drupal-br+...@googlegroups.com
Para ver mais opções: http://groups.google.com/group/drupal-br?hl=pt-BR_BR?hl=pt-BR



--
Joel Wallis

Joel Wallis

unread,
Nov 27, 2012, 9:29:35 PM11/27/12
to drupal-br
Tem um vídeo no Vimeo sobre workflow de Drupal com Git animal. Acho que está nos meus favoritos: vimeo.com/joelwallis
--
Joel Wallis

Fábio Martinelli

unread,
Nov 28, 2012, 4:53:57 AM11/28/12
to drup...@googlegroups.com
Eu estou usando o GIT mas tudo isso é bem novo pra mim,
praticamente estou usando como uma forma de mover os arquivos da máquina local para o servidor, através do bitbucket, e poder brincar um pouco em trazer os módulos e voltar ao que era, mas definitivamente preciso dominar essa ferramenta

Esse vídeo que você me mandou parece ser excelente! Já vi 15 minutos, mas vou assistir inteiro hoje

Preciso fugir da tentação de fazer algo simples no dev e ir lá manualmente e botar na produção, seguir a risca as features

Valeu pela dica! Vou lá eu estudar ...


Em quarta-feira, 28 de novembro de 2012 00h29min35s UTC-2, Joel Wallis escreveu:
Tem um vídeo no Vimeo sobre workflow de Drupal com Git animal. Acho que está nos meus favoritos: vimeo.com/joelwallis


Em 27 de novembro de 2012 23:27, Joel Wallis <joelw...@gmail.com> escreveu:
Legal, cara! Parabéns!

Próximo passo: usar Git para gerenciar isso. Você vai ter um controle duka no seu projeto! :)


Em 27 de novembro de 2012 23:04, Fábio Martinelli <webm...@guaru.net> escreveu:

Joel

Estou tentando seguir isso tudo,
um passo que eu fiz que acho que foi certo foi isso, eu baixava os módulos e testava no ambiente dev 
ai exportei as features e todos os módulos via git para o ambiente de produção

Depois que ficou tudo belezinha, eu fiz um backup e migrate e exportei todo o site e banco de dados para o ambiente de DEV
ai foi só ajustar algumas configurações e tenho meu ambiente de dev com conteúdo real e atualizado, e praticamente clone das funcionalidades do PROD

ai posso brincar de novo de testar módulos e funcionalidades

Estou gostando dessa brincadeira!

abs


--
Joel Wallis

Fábio Martinelli

unread,
Nov 28, 2012, 5:03:35 AM11/28/12
to drup...@googlegroups.com
Definitivamente preciso aprender a usar isso de branchs! Como é o primeiro projeto, trabalho sozinho e ainda nem lancei oficialmente, não tenho tantas mudanças que possam complicar, mas assim que isso for pro ar de verdade.. ahh ai não pode mais ter falhas

abs

Joel Wallis

unread,
Nov 28, 2012, 6:23:40 AM11/28/12
to drup...@googlegroups.com
Eu vou arrumar tempo pra postar essas duvidas no post de Feature Driven Development do Da Gota. :) Alias, seu feedback eh mto bem vindo (voce eh exatamente o perfil de leitor que esperava).

Ronald Bolsoni Falcão

unread,
Nov 28, 2012, 7:21:32 AM11/28/12
to drup...@googlegroups.com
Para saber um pouco mais sobre o Git, para quem está iniciando, essa é uma boa dica...


Bons estudos.


----------------------------------------------------------------------------------------------------------------

Ronald Bolsoni Falcão
desenvolvedor web

twitter   @ronaldcurtis


"Se você eliminar o impossível o que sobrar, mesmo que improvável, dever ser verdade.
Sir Arthur Conan Doyle

Fábio Martinelli

unread,
Nov 28, 2012, 1:07:55 PM11/28/12
to drup...@googlegroups.com
Muito bom esse curso Ronald!

Rapidinho e dá uma visão legal do fluxo como as coisas vão funcionando,

Joel, simplificandoo FDD

Cria cada pecadinho separado, salva tudo com features, versiona no git e sobe
abre uma nova branch para desenvolver um novo recurso, depois de pronto, exporta as features e faz um merge com o repositorio principal

Bem isso né? Depois dessa minha primeira brincadeira, vou partir para um projeto bem grande com diversos recursos que quero implementar, e isso de ir lançando recursos prontos e ir melhorando, ampliando é tudo de bom

Feedback sempre, pois surgem dúvidas que não ficam claras para um iniciante

Uma coisa que ainda pega, nessa parte, de criar o ambiente de dev, test e prod ou live, pelo vídeo mostra bem legal o ciclo de mover arquivos para o test e prod e mover banco do prod para o test e dev

Qual a melhor forma de mover o banco do prod para o test e dev? Via backup e migrate mesmo?
foi isso que eu fiz seguindo minha intuição ....

abs

Joel Wallis

unread,
Nov 28, 2012, 3:21:46 PM11/28/12
to drupal-br
O Drush tem comandos para dump de banco, Acho que é sql-sync ou coisa do tipo. Eu tinha uma prática ruim de exportar o banco e jogar no repositório, mas vou adaptar isso também. Código precisa ser versionado, conteúdo precisa estar em backup. rs.

Muito massa quando ensino e aprendo junto.


Em 28 de novembro de 2012 15:07, Fábio Martinelli <webm...@guaru.net> escreveu:
Cria cada pecadinho separado, salva tudo com features, versiona no git e sobe
abre uma nova branch para desenvolver um novo recurso, depois de pronto, exporta as features e faz um merge com o repositorio principal

Bem isso né? Depois dessa minha primeira brincadeira, vou partir para um projeto bem grande com diversos recursos que quero implementar, e isso de ir lançando recursos prontos e ir melhorando, ampliando é tudo de bom

Feedback sempre, pois surgem dúvidas que não ficam claras para um iniciante

Uma coisa que ainda pega, nessa parte, de criar o ambiente de dev, test e prod ou live, pelo vídeo mostra bem legal o ciclo de mover arquivos para o test e prod e mover banco do prod para o test e dev

Qual a melhor forma de mover o banco do prod para o test e dev? Via backup e migrate mesmo?



--
Joel Wallis

Leonardo Silva

unread,
Nov 28, 2012, 3:36:33 PM11/28/12
to drup...@googlegroups.com
drush sql-dump --result-file=path/arquivo.sql


Marco Telles

unread,
Nov 28, 2012, 3:43:03 PM11/28/12
to drup...@googlegroups.com
Joel, o que mais eu gostei dessa thread que venho acompanhando, é tão simples, mas você não imagina como me ajudou num post seu encontrar isso:

Atualizar traduções
drush l10n-update
- necessita do módulo Localization update ( http://drupal.org/project/l10n_update )
Cara, eu não sabia disso e perdia maior tempão buscando traduções... Valeu! :D :D

***
Marco Telles
pierdeipanema.com
Pier de Ipanema, apoie essa idéia!
twitter.com/pier_de_ipanema


Em 28 de novembro de 2012 18:21, Joel Wallis <joelw...@gmail.com> escreveu:

Marco Telles

unread,
Nov 28, 2012, 3:44:00 PM11/28/12
to drup...@googlegroups.com
## backup do banco de dados
drush sql-dump --gzip --result-file=[/pasta/nome do arquivo]

## Restaurar:
drush sql-load

Helal Ferrari Cabral

unread,
Nov 28, 2012, 3:47:59 PM11/28/12
to drup...@googlegroups.com
O ideal num repositório é vc ter sim um bkp do banco de dados, até por que nesse banco não haverá conteudo se tiver (somente o básico ou a primeira versão de um projeto que você está pegando para dar manutencao)

Depois disso o correto e utilizar features e hook_update_n para ativar novos recursos no projeto.

Estou com um projeto junto com o Leo Silva e o so fizemos um novo backup do banco por que tive que reestruturar mais de 220 modulos para o nosso padrao de desenvolvimento aqui na taller.

sites/all/modules/contrib
sites/all/modules/custom
sites/all/libraries

Depois disso só com hook_update_n e ja faz umas 2 semanas quase que nunca mais tivemos q trocar banco um com outro.

Abs.
Helal Ferrari Cabral
Analista de sistemas

ferrar...@gmail.com
+55 48 9122 6677
www.helalferrari.com

Joel Wallis

unread,
Nov 28, 2012, 3:55:22 PM11/28/12
to drupal-br
Definir o --result-file é mto cansativo. Melhor: drush sql-dump > db.sql

Coyote não sabia do sql-load :) Legal!

Joel Wallis

unread,
Nov 28, 2012, 3:58:43 PM11/28/12
to drupal-br
Ue, esse sql-load não existe. Oo Que diabos de comando é esse? Procurei na documentação e não encontrei. Rodei drush help sql-load e nada também.
--
Joel Wallis

Joel Wallis

unread,
Nov 28, 2012, 4:00:12 PM11/28/12
to drupal-br
Coyote, eu sempre estou dando uma olhada no output do comando drush help. Ele traz os possíveis comandos nativos do Drush e também comandos de outros módulos contrib. Alguns deles são muito legais, como o l10n-update e 0 l10n-update-refresh.
--
Joel Wallis

Joel Wallis

unread,
Nov 28, 2012, 4:02:41 PM11/28/12
to drupal-br
Galera, vocês podem (E DEVEM) comentar NO POST as suas considerações. Assim rola uma troca de ideias na própria página!

Eu pretendo atualizar aquele post com outras informações, algumas que eu vou aperfeiçoar e outras dos leitores que interagem com o assunto (como o caso do Fábio). Assim vocês nos incentivam a continuar escrevendo, ensinando e aprendendo.

(A galera não é nem um pouco descentralizada... hehehe)
--
Joel Wallis

Marco Telles

unread,
Nov 28, 2012, 4:09:29 PM11/28/12
to drup...@googlegroups.com
Joel, enconteri nesse link:

http://www.drupblue.com/blog/utilizando-drush
sql load	Copia la base de datos hacia la base de datos del sitio.

e aqui também:
http://groups.drupal.org/node/28088

Será que não existe mais ? O post é antigo... :(

Abs

Fábio Martinelli

unread,
Nov 28, 2012, 5:08:31 PM11/28/12
to drup...@googlegroups.com
Essa eu já tinha visto

Drush realmente é fantástico, foi uma das primeiras coisas que quiz aprender no Drupal, exatamente para não precisar ficar descompactando módulos, movendo de pastas alterando permissões etc

Fábio Martinelli

unread,
Nov 28, 2012, 5:10:59 PM11/28/12
to drup...@googlegroups.com
Eu imagino ter uma versão simples sim do banco, sem conteúdo, por que tem muitas configurações que acabam não entrando nas Features,
ou então é o que eu estava imaginando, criar uma Feature para cada configuração básica, e nem sei se isso tem por exemplo, dos módulos que estão instalados e ativos



Em quarta-feira, 28 de novembro de 2012 18h47min59s UTC-2, Helal escreveu:
O ideal num repositório é vc ter sim um bkp do banco de dados, até por que nesse banco não haverá conteudo se tiver (somente o básico ou a primeira versão de um projeto que você está pegando para dar manutencao)

Depois disso o correto e utilizar features e hook_update_n para ativar novos recursos no projeto.

Estou com um projeto junto com o Leo Silva e o so fizemos um novo backup do banco por que tive que reestruturar mais de 220 modulos para o nosso padrao de desenvolvimento aqui na taller.

sites/all/modules/contrib
sites/all/modules/custom
sites/all/libraries

Depois disso só com hook_update_n e ja faz umas 2 semanas quase que nunca mais tivemos q trocar banco um com outro.

Abs.

Em 28 de novembro de 2012 18:44, Marco Telles <coyo...@gmail.com> escreveu:
## backup do banco de dados
drush sql-dump --gzip --result-file=[/pasta/nome do arquivo]

## Restaurar:
drush sql-load

Fábio Martinelli

unread,
Nov 28, 2012, 5:14:28 PM11/28/12
to drup...@googlegroups.com
O lance todo, é que o conteúdo não é apenas o que está no banco de dados mas também os arquivos, imagens e tudo isso..
e é muito legal poder trabalhar, mexer nas coisas sem ficar vendo aqueles Loren Ipsum ou as imagens quadradinhas com circulos que esse modulo devel cria

Importar o banco é bem prático para o simples caso de voltar com todas as configurações do site, mas faltam coisas né

Esse tópico está ficando bem legal


Em quarta-feira, 28 de novembro de 2012 18h21min46s UTC-2, Joel Wallis escreveu:
O Drush tem comandos para dump de banco, Acho que é sql-sync ou coisa do tipo. Eu tinha uma prática ruim de exportar o banco e jogar no repositório, mas vou adaptar isso também. Código precisa ser versionado, conteúdo precisa estar em backup. rs.

Muito massa quando ensino e aprendo junto.



Eu também aprendo muito! o Drupal é coisa de anos de aprendizagem e prática.. não é algo que vai parar no tempo.. isso já estou percebendo, e sempre tem coisas novas surgindo não

 
--
Joel Wallis



abs 

Fábio Martinelli

unread,
Nov 29, 2012, 1:22:20 PM11/29/12
to drup...@googlegroups.com
Dúvida nisso

Eu acabei de instalar e configurar um Módulo de Tag Cloud no site, fiz tudo certinho até para desenvolver fiz ele em uma nova branch no git, depois mesclei e enviei pro bitbucket

Ai seria a hora de criar uma Feature com essas configurações, mas não aparece nada desse módulo por lá

Eu fui anotando o passo a passo, vou fazer um pull dos arquivos no servidor de produção e vou replicar a configuração manualmente,
é a alternativa mesmo?

Usar o Features só para criação de tipo de conteúdo, views, display, menus, configurações.. e algumas coisas serem feitas replicando o passo a passo

Eu chego lá rs

Joel Wallis

unread,
Nov 29, 2012, 2:18:21 PM11/29/12
to drupal-br
Fábio, use hook_install e hook_update para automatizar isso.


--
Ao responder um tópico, reproduza apenas a parte relevante da mensagem original, apagando demais partes e assinaturas.
 
Para cancelar a inscrição deste grupo: drupal-br+...@googlegroups.com
Para ver mais opções: http://groups.google.com/group/drupal-br?hl=pt-BR_BR?hl=pt-BR



--
Joel Wallis

Helal Ferrari Cabral

unread,
Nov 29, 2012, 2:35:56 PM11/29/12
to drup...@googlegroups.com
Ou melhor

criei o arquivo seumodulo.install

e dento dele use o hook_update_n

Abs.

Fábio Martinelli

unread,
Nov 29, 2012, 2:39:18 PM11/29/12
to drup...@googlegroups.com
Uf .. calma ai.. rs vou pesquisar mais sobre isso

Não se esqueça de que sou iniciante, não faz nem um mês que estou mexendo com Drupal ...
Vou postar meu site, não está pronto, mas já dá para apresentar e navegar

valeu por orientar o caminho...


Em quinta-feira, 29 de novembro de 2012 17h18min21s UTC-2, Joel Wallis escreveu:
Fábio, use hook_install e hook_update para automatizar isso.

Joel Wallis

unread,
Nov 29, 2012, 2:42:43 PM11/29/12
to drupal-br



Em 29 de novembro de 2012 16:39, Fábio Martinelli <webm...@guaru.net> escreveu:
Não se esqueça de que sou iniciante, não faz nem um mês que estou mexendo com Drupal ...
Vou postar meu site, não está pronto, mas já dá para apresentar e navegar



--
Joel Wallis

Reply all
Reply to author
Forward
0 new messages