goa/doc/devmanual_fr/chap_mise_en_place_environnement.txt
author Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
Thu, 23 Jul 2009 15:28:41 +0200
changeset 2456 aa25d6b244c8
parent 0 b97547f5f1fa
permissions -rw-r--r--
new cwuri metadata + a few tests fixes on the way

Mise en place d'un environnement de développement CubicWeb
=======================================================

.. include:: sect_mercurial.txt
.. include:: sect_installation.txt
.. include:: sect_cubicweb-ctl.txt



Création d'un composant
-----------------------
Commençons par créer un squelette qui nous servira de base au développement de
notre composant ou application ::

  cd ~/hg
  cubicweb-ctl newtemplate moncomposant
  # répondre aux questions
  hg init moncomposant
  cd moncomposant
  hg add .
  hg ci

A partir de là si tout va bien, votre composant devrait être affiché par
`cubicweb-ctl list` dans la section *Avaible components*, si ce n'est pas le cas
revoir la section `Configuration de l'environnement`_.


Création d'une instance de développement
----------------------------------------

Maintenant que nous avons notre squelette de modèle, on peut en créer une
instance afin de voir ce que tout ça donne dans un simple navigateur web.
Nous allons utiliser une configuration `all-in-one` afin de simplifier les
choses ::

  cubicweb-ctl create all-in-one moncomposant moninstance

Une série de questions vont être posées, la réponse par défaut est généralement
suffisante. Vous pourrez de toute façon modifier la configuration par la suite
en éditant les fichiers générés. Lorsqu'un login/mot de passe d'accès au sgbd
vous est demandé, il est recommandé d'utilisé l'utilisateur créé lors de la
`Configuration Postgres`_.

Il est important de distinguer ici l'utilisateur utilisé pour accéder au sgbd,
et l'utilisateur utilisé pour s'authentifier dans l'application cubicweb. Lorsque
l'application cubicweb démarre, elle utilise le login/mot de passe sgdb pour
récupérer le schéma et gérer les transactions bas-niveau. En revanche, lorsque
`cubicweb-ctl create` vous demande un login/mot de passe `manager` pour cubicweb, il
s'agit d'un utilisateur qui sera créé dans l'application `cubicweb` pour pouvoir
s'y connecter dans un premier temps et l'administrer. Il sera par la suite possible
de créer des utilisateurs différents pour l'application.

A l'issue de cette commande, la définition de votre instance se trouve dans
*~/etc/cubicweb.d/moninstance/*. Pour la lancer, il suffit de taper ::

  cubicweb-ctl start -D moninstance

L'option `-D` indique le *debug mode* : l'instance ne passe pas en mode serveur
et ne se déconnecte pas du terminal, ce qui simplifie le dépannage en cas de non
démarrage de l'instance. Vous pouvez ensuite allez voir ce que ça donne en
pointant votre navigateur sur l'url `http://localhost:8080` (le n° de port
dépend de votre configuration). Pour vous authentifier vous pouvez utiliser le
login/mot de passe administrateur que vous avez spécifié lors de la création de
l'instance.

Pour arrêter l'instance, un Ctrl-C dans la fenêtre où vous l'avez lancé
suffit. Si l'option `-D` a été omise, il faut taper ::

  cubicweb-ctl stop moninstance

Voilà, tout est en place pour démarrer le développement du modèle...


Utilisation de cubicweb-liveserver
-------------------------------

Afin de tester rapidement un nouveau composant, on peut également
utiliser le script `cubicweb-liveserver` qui permet de créer une
application en mémoire (utilisant une base de données SQLite par
défaut) et la rendre accessible via un serveur web::

  cubicweb-liveserver moncomposant

ou bien, pour utiliser une base de données existante (SQLite ou postgres)::

  cubicweb-liveserver -s monfichier_sources moncomposant