Marre de redémarrer Zope2 & Plone ?
Si vous en avez marre de redémarrez Zope2 à chaque modification du code source (python ou zcml) cette astuce est pour vous: utiliser plone.reload si vous utilisez Plone 3 ou alors RefreshNG si vous utilisez Plone 2.5.
Plone 3 & plone.reload
plone.reload sur pypi
Installer plone.reload 0.9
Editer votre buildout.cfg pour y intégrer plone.reload:
[project]
...
eggs=
...
plone.reload
zcml=
...
plone.reload
[versions]
...
plone.reload = 0.9
Puis relancer votre buildout:
$ ./bin/buildout -c buildout.cfg
Utiliser plone.reload
Si votre Zope écoute sur le port 8080 de localhost, rendez-vous à l’adresse suivante: http://localhost:8080/@@reload
L’interface vous propose deux actions:
- Reload code: Tous les modules modifiés depuis leur dernier chargement sont rechargés.
- Reload code and ZCML: Recharge également tous les modules modifiés mais aussi toutes les directives de configuration ZCML.
Attention: plone.reload reste expérimental et possède certaines limites, notament pour les méthodes décorées qui ne sont pas rechargées correctement.
Plone 2.5 & RefreshNG
RefreshNG sur launchpad.netPourquoi ne pas utiliser plone.reload ?
Et bien tout simplement car je n’ai pas réussi ;) et que plone.reload s’est très fortement inspiré du produit Zope RefreshNG.
Installer RefreshNG 0.1
Editer votre buildout.cfg pour y intégrer RefreshNG:
[project]
...
urls=
...
http://launchpad.net/refreshng/0.1/0.1/+download/RefreshNG-0.1.tar.gz
Puis relancer votre buildout:
$ ./bin/buildout -c buildout.cfg
Utiliser RefreshNG
Pour activer la fonction “refresh” pour un de vos produits en cours de développement (ex: MyProduct), il suffit de rajouter dans le produit un fichier vide nommé “refresh.txt”.
Rendez-vous alors via la ZMI sur la page “Control_Panel > Products > MyProduct” puis cliquez sur l’onglet “refresh”.
L’interfarce vous propose alors de recharger le produit (Refresh this product) et même de marquer le produit comme “auto-recharcheable” (auto refresh mode).
Attention: Tous les produits ne sont pas compatibles avec cette fonctionnalité, cf. le README du produit RefreshNG pour en savoir plus.