You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bloodhound.apache.org by Apache Bloodhound <bl...@incubator.apache.org> on 2012/11/15 04:46:48 UTC
[Apache Bloodhound] Proposals/BEP-0003/MultienvParentDir added
Page "Proposals/BEP-0003/MultienvParentDir" was added by olemis
Comment: [BEP-0003] Reference multi-environment setup
Content:
-------8<------8<------8<------8<------8<------8<------8<------8<--------
= 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]
accordingly.
- Do not install any plugins in environment's `plugin`
folder.
== Discussion #discussion
The following figure offers a graphical representation of the situation after following the installation steps mentioned above.
[[Image(Multienv.png)]]
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 [http://www.jot.fm/issues/issue_2007_03/column2/ 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.
-------8<------8<------8<------8<------8<------8<------8<------8<--------
--
Page URL: <https://issues.apache.org/bloodhound/wiki/Proposals/BEP-0003/MultienvParentDir>
Apache Bloodhound <https://issues.apache.org/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 .