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 [ref]http://codex.wordpress.org/Changing_The_Site_URL[/ref], algumas mirabolantes [ref]http://wordpress.stackexchange.com/questions/119/easily-move-a-wordpress-install-from-development-to-production[/ref], 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.
Bruno,
valeu, obrigado. Vou estudar e me aprofundar nesse assunto.
BrunoNuno… 😉Perdão.
Não sei onde estava com a cabeça quanto cometi esse erro tosco.
Grato
Gostei. Amanhã vou ver a apresentação com mais detalhe.
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.
Olá Rodrigo, bem-vindo à comunidade. Teremos todo o prazer em ajudar mas este não é o melhor local para isso. Coloca, por favor, as questões (uma a uma) no Fórum da Comunidade. Obrigado.
Obrigado José 🙂
Vou colocar as perguntas no Forum, de qualquer forma pensei que o entrevistado pudesse ter alguma dica 😀
Obrigado.