Este documento fornece dicas e melhores práticas para desenvolvimento com Plone 4, incluindo configuração de buildout, uso de virtualenv, templates com ZopeSkel, fixação de versões de pacotes e solução de problemas com buildout.
Melhores Práticas para o Desenvolvimento com Plone 4
1. Melhores Práticas para
desenvolvimento com
Plone 4
http://www.slideshare.net/dorneles/melhores-praticas-dev-plone-4
Curitiba, PythonBrasil[6]
23 de Outubro de 2010
Dorneles Treméa
X3ng / Enfold / APyB / GTiC
1
quinta-feira, 4 de novembro de 2010
2. Crise de Identidade!
• Segundo Grau: Codorna (?)
• Universidade: Cortininha (???)
• Sidnei: Dorna
• APyB: Big Kahuna (2009)
• Limi:“Dolores” (??????????????????????????)
• Família: Déo
• 007: Neles, Dorneles.
• Eu:Apenas um rapaz latino-americano
2
quinta-feira, 4 de novembro de 2010
3. O que faço?
• Empreendedor na X3ng
• Desenvolvedor na Enfold Systems
• Presidente (office-boy, ...) na APyB
• Mestre de cerimônia na PythonBrasil :-)
• Tento ser um bom pai em casa!
• Colaborador no projeto Plone
3
quinta-feira, 4 de novembro de 2010
5. Por que estão aqui?
• A outra sala estava lotada
• O Wifi é mais rápido
• Único lugar com tomadas sobrando
• Curitiba não tem praia
• Talvez tenham interesse no tema!
5
quinta-feira, 4 de novembro de 2010
6. Plone
• “Plone é atualmente o CMS mais
completo presente no mercado.”
-- Dorneles, PythonBrasil[6]
• E um dos mais rápidos também! :-)
6
quinta-feira, 4 de novembro de 2010
14. Dica: cache
14
Ative o cache do buildout
$ mkdir -p ~/cache/{zope,download,eggs,extends}
$ cat ~/.buildout/default.cfg
[buildout]
zope-directory=/home/dorneles/cache/zope
download-cache=/home/dorneles/cache/download
download-directory=/home/dorneles/cache/download
eggs-directory=/home/dorneles/cache/eggs
extends-cache=/home/dorneles/cache/extends
quinta-feira, 4 de novembro de 2010
15. Dica: python
Use seu próprio Python
$ cd ~
$ svn co http://svn.plone.org/svn/collective/buildout/python
$ cd python
$ python bootstrap.py
$ bin/buildout
$ ls python*
15
quinta-feira, 4 de novembro de 2010
16. Dica: virtualenv
16
Ative o virtualenv a ser usado
$ python -V
Python 2.6.1
$ source ~/python/python-2.6/bin/activate
$ python -V
Python 2.6.6
quinta-feira, 4 de novembro de 2010
17. Dica: ZopeSkel
17
Conjunto templates para paster
$ pip install ZopeSkel
$ zopeskel plone3_buildout teste
$ cd teste
$ python bootstrap.py
$ bin/buildout
$ bin/instance start
quinta-feira, 4 de novembro de 2010
18. Dica: novos pacotes
18
Utilize o zopeskel, ora bolas!
$ zopeskel --help
$ zopeskel plone3_buildout teste
$ zopeskel plone_app package.one
$ zopeskel plone_pas package.two
quinta-feira, 4 de novembro de 2010
19. Dica: fixar versões
19
Define a versão exata dos pacotes
$ cat buildout.cfg
extends =
...
versions.cfg
$ cat versions.cfg
[versions]
package.one = 1.0
package.two = 0.666-satan++
quinta-feira, 4 de novembro de 2010
20. Dica: dump versions
20
Lista todos pacotes não pinados
$ cat buildout.cfg
[buildout]
extensions = buildout.dumppickedversions
...
quinta-feira, 4 de novembro de 2010
21. Dica: road runner
21
Pré-carrega testes para TDD
$ cat buildout.cfg
...
[roadrunner]
recipe = roadrunner:plone
packages-under-test =
package.one
package.two
quinta-feira, 4 de novembro de 2010
22. Dica: omelette
22
Gera árvore explodida pacotes
$ cat buildout.cfg
...
[omelette]
recipe = collective.recipe.omelette
eggs = ${instance:eggs}
location = ${buildout:directory}/source
quinta-feira, 4 de novembro de 2010
23. Dica: produtos úteis
• Products.Clouseau
• Products.Gloworm
• Products.DocFinderTab
• Products.PDBDebugMode
23
quinta-feira, 4 de novembro de 2010
24. Problemas buildout?
• bin/buildout -U
• Evita ler o ~/.buildout/default.cfg
• bin/buildout -D
• Inicia o pdb no ponto da exceção
• bin/buildout -t 2
• Reduz o timeout para 2 segundos
24
quinta-feira, 4 de novembro de 2010
25. Registro Usuários
25
• Introdução do plone.app.users
• Permite personalizar o formulário
de cadastro (e das preferências) do
usuário sem editar templates
• Exemplo: collective.examples.userdata
quinta-feira, 4 de novembro de 2010
26. Generic Setup
26
• Crie um snapshot no portal_setup
para ver todas as opções suportadas
• Arquivos devem conter apenas o que
realmente é necessário
• Utilize os atributos disponívies:
insert-before/.../purge/remove
quinta-feira, 4 de novembro de 2010
27. Dexterity
for the rescue?
27
• Archetypes não morreu (e não vai
morrer tão cedo!)
• Dexterity simplifica a criação de novos
tipos de conteúdo, permitindo a
edição do schema e a definição de
comportamentos pelo navegador
• ZopeSkel plugin: zopeskel.dexterity
quinta-feira, 4 de novembro de 2010
28. Outras Regras de Ouro
• Sempre alterar a senha do Manager após o
primeiro acesso
• Nunca mudar manualmente as permissões
dos objetos na ZMI, a menos que saiba o
que está fazendo!
• Utilize o collective.recipe.backup para não
se preocupar mais tarde...
28
quinta-feira, 4 de novembro de 2010
29. Contato
• Dorneles Treméa
• @dorneles
• dorneles@tremea.com
• deo @ irc://irc.freenode.net
29
quinta-feira, 4 de novembro de 2010