Ambientes de Desenvolvimento

No encontro de 27 de Novembro, apresentei uma solução para ambientes de desenvolvimento com WordPress. Aqui estão os slides e mais algum contexto:

Os ambientes de desenvolvimento normalmente recomendados são:

Desenvolvimento: a cópia local na máquina do programador.

Staging: onde se faz continuous integration e se testa novas funcionalidades. Deve ser o mais parecido possível com o ambiente de produção de maneira a evitar surpresas quando se criam novas versões.

Produção: é o site real, ao vivo, que os utilizadores vêem.


Em cada um destes ambientes existe uma base de dados diferente.

Queres trazer uma cópia do site para desenvolver localmente?

É relativamente fácil. Se estiveres em Linux ou Mac basta pôr no /etc/hosts uma entrada do URL a apontar para o localhost e consegue-se muito facilmente desenvolver localmente.

Queres fazer commit para um servidor de staging?

Aqui é mais complicado porque normalmente o servidor de staging tem um URL diferente e é preciso alterar na base de dados todas as referências que existam do URL. Normalmente as pessoas tentam fazer um search-and-replace e só mais tarde percebem que isso não funciona por causa dos serialized arrays.

Vou explicar o que acontece porque é importante para perceber a solução que eu uso e recomendo. Quando se quer guardar um array na base de dados o WordPress usa a função serialize, que cria um serialized array que é algo desta forma:

s:15:"poll_happypolls"

Aquele 15 é o tamanho da string que se segue. Quando se faz um search-and-replace muda-se a string mas como não se alterou o tamanho os dados ficam corrompidos.

Existem algumas formas de resolver isto 1, algumas mirabolantes 2, mas na minha opinião são muito error-prone e não são algo que queira fazer regularmente.

Uma maneira muito simples de resolver isto é usar um site URL do mesmo tamanho em desenvolvimento, staging e produção. Isso faz com que seja trivial fazer migrações (mudar a base de dados de um sítio para o outro), apenas basta fazer o search-and-replace, o que pode ser facilmente automatizado com um script. Esta é uma solução muito simples e quanto a mim elegante até dada a sua simplicidade.

7 pensamentos sobre “Ambientes de Desenvolvimento

  1. Olá,

    Ainda sou um nabo nisto de wordPress, mas será que podiam ajudar-me?

    1 – Quando quero testar ou melhorar uma instalação de wordpress localmente, a melhor maneira noob 😀 de o fazer é uma cópia exacta do site em produção, e mete-lo num localhost tipo wamp/Mamp?

    2 – Para não ter de andar a alterar o caminho da BD do site em desenvolvimento, podemos só alterar no localhost o caminho no wp-config.php, como indicado aqui?:
    http://codex.wordpress.org/Changing_The_Site_URL#Edit_wp-config.php

    3 – Onde é que posso aprender a trabalhar com o BitBucket ou Github + SourceTree?

    Obrigado.

Deixar uma resposta