incubator-bloodhound-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Apache Bloodhound" <>
Subject [Apache Bloodhound] Proposals/BEP-0003/MultienvParentDir added
Date Thu, 15 Nov 2012 03:46:48 GMT
Page "Proposals/BEP-0003/MultienvParentDir" was added by olemis
Comment: [BEP-0003] Reference multi-environment setup

= Reference Multi-environment setup for Multi-product architecture #introduction

[BEP:0003 Multi-product architecture] emphasizes on [BEP:0003#backwards-copatibility backwards
compatibiilty] whenever possible in order to make possible smooth upgrade paths from previous
installations. This is particularly important for plugins to work out-of-the-box under the
new circumstances or at least to make easier the upgrade development process for hack authors
. Therefore a well-known setup using multiple environments has been considered as the starting
point to design the current proposal . The main idea behind [BEP:0003 BEP 3] consist in replicating
this scenario inside a single environment and a single database. This document serves to the
purpose of illustrating how much similar is the novel multi-product specification to the former
approach , and is a crucial resource to assert that the impact on plugins will be relatively
minimal .

== Installation details #setup

Before multi-product support , managing multiple projects with ''Bloodhound'' means to create
one environment for each particular case. An ''easy'' way to administer them may be achieved
by considering the instructions explained below

  - [=#setup-config-global] Create a global configuration file 
    containing default settings for all environments.
  - [=#setup-folders] Layout environment directories as siblings 
    i.e. having the same parent directory. This way it will only be 
    necessary to run and configure a single instance to publish them 
    all using a web server.
  - [=#setup-db] Create multiple databases , one for each project .
  - [=#setup-config] For each environment either add 
    `--inherit=/path/to/global/trac.ini` option to 
    [TracAdmin#initenv trac-admin's initenv] command when creating 
    it or specify the path to the global configuration file in `file` option 
    in [TracIni#inherit-section inherit section] .
  - [=#setup-plugins] Place all plugins in a folder and configure 
    `plugins_dir` option in [TracIni#inherit-section inherit section] 
  - Do not install any plugins in environment's `plugin`

== Discussion #discussion

The following figure offers a graphical representation of the situation after following the
installation steps mentioned above. 


Notice that there will be multiple instances of `trac.env.Environment` class , representing
each project/directory . The set of plugins installed in every environment will be the same,
each one contributing the same set of components . However there is a single instance of any
component classes per environment due to the fact that components are [
parametric singletons]. They will interact with different databases , not necessarily of the
same type.

On the other hand , changes performed in global configuration file will affect all environments.
Nonetheless each environment will have its own configuration file and global options may be
overriden on a per project basis. That has many implications including , but not limited to
, different sets of components enabled.


Page URL: <>
Apache Bloodhound <>
The Apache Bloodhound (incubating) issue tracker

This is an automated message. Someone added your email address to be
notified of changes on 'Proposals/BEP-0003/MultienvParentDir' page.
If it was not you, please report to .

View raw message