Mojolicious::Plugins - Plugin manager
use Mojolicious::Plugins;
my $plugins = Mojolicious::Plugins->new;
push @{$plugins->namespaces}, 'MyApp::Plugin';
Mojolicious::Plugins is the plugin manager of Mojolicious.
The following plugins are included in the Mojolicious distribution as examples.
Perl-ish configuration files.
General purpose helper collection, loaded automatically.
Renderer for plain embedded Perl templates, loaded automatically.
Renderer for more sophisticated embedded Perl templates, loaded automatically.
Route condition for all kinds of headers, loaded automatically.
JSON configuration files.
Mount whole Mojolicious applications.
YAML configuration files.
Template specific helper collection, loaded automatically.
Mojolicious::Plugins inherits all events from Mojo::EventEmitter.
Mojolicious::Plugins implements the following attributes.
my $namespaces = $plugins->namespaces;
$plugins = $plugins->namespaces(['Mojolicious::Plugin']);
Namespaces to load plugins from, defaults to Mojolicious::Plugin.
# Add another namespace to load plugins from
push @{$plugins->namespaces}, 'MyApp::Plugin';
Mojolicious::Plugins inherits all methods from Mojo::EventEmitter and implements the following new ones.
$plugins->emit_chain('foo');
$plugins->emit_chain(foo => 123);
Emit events as chained hooks.
$plugins = $plugins->emit_hook('foo');
$plugins = $plugins->emit_hook(foo => 123);
Emit events as hooks.
$plugins = $plugins->emit_hook_reverse('foo');
$plugins = $plugins->emit_hook_reverse(foo => 123);
Emit events as hooks in reverse order.
my $plugin = $plugins->load_plugin('some_thing');
my $plugin = $plugins->load_plugin('SomeThing');
my $plugin = $plugins->load_plugin('MyApp::Plugin::SomeThing');
Load a plugin from the configured namespaces or by full module name.
$plugins->register_plugin('some_thing', Mojolicious->new);
$plugins->register_plugin('some_thing', Mojolicious->new, foo => 23);
$plugins->register_plugin('some_thing', Mojolicious->new, {foo => 23});
$plugins->register_plugin('SomeThing', Mojolicious->new);
$plugins->register_plugin('SomeThing', Mojolicious->new, foo => 23);
$plugins->register_plugin('SomeThing', Mojolicious->new, {foo => 23});
$plugins->register_plugin('MyApp::Plugin::SomeThing', Mojolicious->new);
$plugins->register_plugin(
'MyApp::Plugin::SomeThing', Mojolicious->new, foo => 23);
$plugins->register_plugin(
'MyApp::Plugin::SomeThing', Mojolicious->new, {foo => 23});
Load a plugin from the configured namespaces or by full module name and run register
, optional arguments are passed through.