.. -*- coding: utf-8 -*-===================================Creation de votre premiere instance===================================Qu'est-ce qu'une instance?==========================Une instance CubicWeb consiste en un dossier situe dans ``~/etc/cubicweb.d``qui permettra de lancer une application web. Une instance est cree a partird'un ou plusieurs cubes.Nous recommandons de ne pas definir de schema, entites ou vues dans l'instance meme si cela est possible dans un but de re-utilisabilite des entities et de leursvues. Nous conseillons plutot de developper des cubes qui pourront par la suiteetre utilises dans d'autres instances (approche modulaire).L'instance n'est qu'un conteneur referrant a des cubes et a des parametresdes configuration de l'application web.Qu'est-ce qu'un cube?=====================Un cube definit des entities, leur vues, leur schemas et leur workflow dans un repertoire independant situe dans ``/path/to/forest/cubicweb/cubes/``.Lors de la creation d'une instance, vous avez la possibilite de listerle ou les cubes que votre instance va utiliser. Utiliser un cube signifieavoir a disposition dans votre instance les entites definies dans le schemade votre cube ainsi que les vues et les workflows... note:: Les commandes utilisees ci-apres sont detaillees dans la section dediee a :ref:`cubicweb-ctl`.Création d'un cube==================Commençons par créer un squelette qui nous servira de base au développement denotre cube ou application :: cd ~/hg cubicweb-ctl newtemplate moncube # répondre aux questions cd moncube hg init hg add . hg ciA partir de là si tout va bien, votre cube devrait être affiché par`cubicweb-ctl list` dans la section *Available components*, si ce n'est pas le casrevoir la section :ref:`ConfigurationEnv`.Pour utiliser un cube, il faut le mentionner dans la variable__use__ du fichier __pkginfo__ de l'application. Cette variablecontrôle à la fois le packaging de l'application (dépendances géréespar les utilitaires système comme les outils APT) et les composantseffectivement utilisables lors de la création de la base(import_erschema('Moncomposant') ne fonctionne pas sinon).FIXME - need example code :: __use__ = ('blog', 'file')Création d'une instance de développement========================================Maintenant que nous avons notre squelette de modèle, on peut en créer uneinstance afin de voir ce que tout ça donne dans un simple navigateur web.Nous allons utiliser une configuration `all-in-one` afin de simplifier leschoses :: cubicweb-ctl create -c all-in-one moncube moninstanceUne série de questions vont être posées, la réponse par défaut est généralementsuffisante. Vous pourrez de toute façon modifier la configuration par la suiteen éditant les fichiers générés. Lorsqu'un login/mot de passe d'accès au sgbdvous est demandé, il est recommandé d'utiliser l'utilisateur créé lors de la:ref:`ConfigurationPostgres`.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. Lorsquel'application cubicweb démarre, elle utilise le login/mot de passe sgdb pourré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, ils'agit d'un utilisateur qui sera créé dans l'application `cubicweb` pour pouvoirs'y connecter dans un premier temps et l'administrer. Il sera par la suite possiblede 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 moninstanceL'option `-D` indique le *debug mode* : l'instance ne passe pas en mode serveuret ne se déconnecte pas du terminal, ce qui simplifie le dépannage en cas de nondémarrage de l'instance. Vous pouvez ensuite allez voir ce que ça donne enpointant votre navigateur sur l'url `http://localhost:8080` (le n° de portdépend de votre configuration). Pour vous authentifier vous pouvez utiliser lelogin/mot de passe administrateur que vous avez spécifié lors de la création del'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 moninstanceVoilà, tout est en place pour démarrer le développement du modèle...Utilisation de cubicweb-liveserver----------------------------------Afin de tester rapidement un nouveau cube, on peut égalementutiliser le script `cubicweb-liveserver` qui permet de créer uneapplication en mémoire (utilisant une base de données SQLite pardéfaut) et la rendre accessible via un serveur web:: cubicweb-ctl live-server moncomposantou bien, pour utiliser une base de données existante (SQLite ou postgres):: cubicweb-ctl live-server -s monfichier_sources moncomposant