More About Plugins
Plugins are used to complement the normal system of inheritance in object-oriented Perl. Whereas a child object can inherit methods from multiple parents, a parent object normally cannot be overridden by multiple children. The plugin system "aggregates" the contents of several methods into one "master" method that can then be used by mod_perl when rendering the webpage.
The module conf/Plugins.pm
controls which plugins are
used by an instance of Ensembl and their order of precedence. In a
standard Ensembl mirror, the module will define a plugin array as follows:
$SiteDefs::ENSEMBL_PLUGINS = [ 'EnsEMBL::Mirror' => $SiteDefs::ENSEMBL_SERVERROOT.'/public-plugins/mirror', 'EnsEMBL::Ensembl' => $SiteDefs::ENSEMBL_SERVERROOT.'/public-plugins/ensembl' ];
The plugins are processed in reverse order, starting with the last one:
- /public-plugins/ensembl
- This is the plugin used by www.ensembl.org to add all Ensembl species and site-specific content to the base code
- /public-plugins/mirror
- This plugin over-rides /public-plugins/ensembl - normally it is used only to configure local server settings