Added initial Minion support and example test job
This commit is contained in:
parent
cc6ea41ce5
commit
1302f9e843
6 changed files with 101 additions and 0 deletions
|
@ -42,6 +42,7 @@ sub startup {
|
|||
$self->plugin('Pear::LocalLoop::Plugin::Currency');
|
||||
$self->plugin('Pear::LocalLoop::Plugin::Postcodes');
|
||||
$self->plugin('Pear::LocalLoop::Plugin::TemplateHelpers');
|
||||
$self->plugin('Pear::LocalLoop::Plugin::Minion');
|
||||
|
||||
$self->plugin('Authentication' => {
|
||||
'load_user' => sub {
|
||||
|
@ -187,6 +188,12 @@ sub startup {
|
|||
|
||||
my $admin_routes = $r->under('/admin')->to('admin#under');
|
||||
|
||||
if ( defined $config->{minion} ) {
|
||||
$self->plugin( 'Minion::Admin' => {
|
||||
return_to => '/admin/home',
|
||||
route => $admin_routes->any('/minion'),
|
||||
} );
|
||||
}
|
||||
$admin_routes->get('/home')->to('admin#home');
|
||||
|
||||
$admin_routes->get('/tokens')->to('admin-tokens#index');
|
||||
|
|
37
lib/Pear/LocalLoop/Plugin/Minion.pm
Normal file
37
lib/Pear/LocalLoop/Plugin/Minion.pm
Normal file
|
@ -0,0 +1,37 @@
|
|||
package Pear::LocalLoop::Plugin::Minion;
|
||||
use Mojo::Base 'Mojolicious::Plugin';
|
||||
|
||||
use Mojo::Loader qw/ find_modules load_class /;
|
||||
|
||||
sub register {
|
||||
my ( $plugin, $app, $cong ) = @_;
|
||||
|
||||
if ( defined $app->config->{minion} ) {
|
||||
$app->log->debug('Setting up Minion');
|
||||
$app->plugin('Minion' => $app->config->{minion} );
|
||||
|
||||
my $job_namespace = __PACKAGE__ . '::Job';
|
||||
my @modules = find_modules $job_namespace;
|
||||
for my $package ( @modules ) {
|
||||
my ( $job ) = $package =~ /${job_namespace}::(.*)$/;
|
||||
$app->log->debug( $package );
|
||||
$app->log->debug( $job );
|
||||
load_class $package;
|
||||
$app->minion->add_task(
|
||||
$job => sub {
|
||||
my ( $job, @args ) = @_;
|
||||
my $job_runner = $package->new(
|
||||
job => $job,
|
||||
);
|
||||
$job_runner->run( @args );
|
||||
}
|
||||
);
|
||||
}
|
||||
$app->minion->enqueue('test' => [ 'test arg 1', 'test_arg 2' ] );
|
||||
} else {
|
||||
$app->log->debug('No Minion Config');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
1;
|
15
lib/Pear/LocalLoop/Plugin/Minion/Job/test.pm
Normal file
15
lib/Pear/LocalLoop/Plugin/Minion/Job/test.pm
Normal file
|
@ -0,0 +1,15 @@
|
|||
package Pear::LocalLoop::Plugin::Minion::Job::test;
|
||||
use Mojo::Base -base;
|
||||
|
||||
has [ qw/ job / ];
|
||||
|
||||
sub run {
|
||||
my ( $self, @args ) = @_;
|
||||
|
||||
$self->job->app->log->debug( 'Testing Job' );
|
||||
for my $arg ( @args ) {
|
||||
$self->job->app->log->debug( $arg );
|
||||
}
|
||||
}
|
||||
|
||||
1;
|
Reference in a new issue