Versionando o Banco usando Features

Na vida de um desenvolvedor um grande problema encontrado é o tal do versionamento do banco de dados, aquela alteração que você fez no banco local e depois tem que replica-la para o banco em produção, muitas vezes acaba sendo uma tarefa chata. Hoje vamos aprender como fazer isso de uma forma mais fácil e rápida, usando o modulo Features.

O que a Feature faz é nada mais do que criar um modulo, contendo suas informações ou alterações criadas, podendo assim, ser versionada em forma de "modulo". 


Faço o download do modulo Features e habilite-o:


http://drupal.org/project/features

 

Agora vamos criar uma nova Feature, vá em: Administração - Estrutura - Features


Neste exemplo vamos versionar apenas um tipo de conteúdo chamado "
Página de Blog".



Em "Components" fica todo o conteúdo do qual você vai querer versionar, neste caso vou selecionar apenas o Tipo de conteúdo "Página de Blog", porém se na sua Página de Blog conter um Formato de texto específico, que dependa de outro modulo, o Formato de texto e seu modulo também terá que ser adicionado. (O Formato de Texto é apenas um exemplo, poderia ser um Estilo de Imagem, um modulo, uma Taxonomia). O ideal neste caso seria separar em mais Features, criando uma Feature apenas para versionar os Formatos de texto, outra apenas para o Tipo de Conteúdo, outra apenas para a Taxonomia... assim o versionamento fica melhor distribuído, ficando mais organizado.

Depois de selecionar o que será versionado faça o Download da Feature e jogue-a dentro do seu diretório:

  sites/all/modules/custom/features

 

No meu caso criei uma pasta "custom" apenas para deixar os modulos de minha autoria, e a pasta "features" onde irei guardar minhas features criadas, deixando assim a estrutura mais organizada.

 

Retorne em: Administração - Estrutura - Features

Veja que sua Feature já apareceu, habilite-a.


 

 Ok.. agora como usa-lá?

É simples... toda vez que você fizer alguma alteração no Tipo de conteúdo "Pagina de Blog" a feature vai acusar em seu "State" que ouve alguma alteração, e que a versão atual do Banco de dados não é a mesma da Feature. O que você tem que fazer é recriar a feature adicionando as novas configurações realizadas e mudando sua versão, feito isso, faça novamente o download e substitua a Feature antiga dentro do seu diretório.

 

Caso você queira descartar as alterações realizadas e retornar a versão atual da Feature, basta clicar em "Sobrescrever".

 

Feature com State padrão:

 

 Agora vamos adicionar um novo campo chamado "Descricao Blog" no Tipo de Conteúdo "Pagina de Blog" para vermos como vai ficar o "State" da Feature:

 

 

Ao retornar em Features veremos que seu "State" mudou para "Sobrescrito":

 

 

Vamos clicar em "Recreate" para adicionar o novo campo criado ao versionamento da Feature.

 

 

 Veja que a Feature já reconheceu o novo campo e já adicionou no versionamento. Existem casos que a Feature não adiciona automaticamente a alteração realizada em seu versionamento, tendo assim que fazer manualmente. Agora basta mudar a versão da Feature, fazer o download novamente e substitui-la pela antiga, ao fazer isso sua Feature voltara para o "State" padrão.

 

Obs.: É aconselhável sempre limpar o cache antes de criar ou recriar uma Feature.

 

Com as Features criadas, agora só mandar para o projeto em Produção, habilitá-las (ou sobrescrevê-las, caso já exista uma versão antiga) e pronto, seu banco em Produção irá ficar idêntico ao banco local. 

 

Obs.: O modulo Features não versiona os conteúdos cadastrados nos fields, para isso podemos usar o modulo Node Export, que foi abordado neste tutorial.

 

Até a próxima! ;)