Archive Ensembl HomeArchive Ensembl Home
Home > Help & Documentation

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