Unfortunately, I had to submit a bug report yesterday. PAR and Module::Pluggable do not play well together. In theory this test should pass:
package MyApp; use PAR qw( plugins/*.plugin ); use Module::Pluggable; sub new { my $class = shift; return bless { }, $class; } package main; use Test::More tests => 1; my $app = MyApp->new; is( ( $app->plugins() )[ 0 ], 'MyApp::Plugin::Test' );
Note: there should be a plugins/test.plugin file which is really just a PAR file (which is really just a zip file). It should house the MyApp::Plugin::Test
module.
This doesn't work because PAR does some lazy loading and when Module::Pluggable checks @INC
, nothing is there. You can work around this by adding a require MyApp::Plugin::Test;
just about anywhere -- but that sort of defeats the purpose.