Created role for Minion Jobs to make dev easier

This commit is contained in:
Thomas Bloor 2018-03-21 17:14:51 +00:00
parent c0375dcd41
commit 30c210200f
4 changed files with 29 additions and 6 deletions

View file

@ -7,15 +7,16 @@ sub register {
my ( $plugin, $app, $cong ) = @_; my ( $plugin, $app, $cong ) = @_;
if ( defined $app->config->{minion} ) { if ( defined $app->config->{minion} ) {
$app->log->debug('Setting up Minion'); $app->log->debug('Setting up Minion tasks');
$app->plugin('Minion' => $app->config->{minion} ); $app->plugin('Minion' => $app->config->{minion} );
$app->log->debug('Loaded Minion Job packages:');
my $job_namespace = __PACKAGE__ . '::Job'; my $job_namespace = __PACKAGE__ . '::Job';
my @modules = find_modules $job_namespace; my @modules = find_modules $job_namespace;
for my $package ( @modules ) { for my $package ( @modules ) {
my ( $job ) = $package =~ /${job_namespace}::(.*)$/; my ( $job ) = $package =~ /${job_namespace}::(.*)$/;
$app->log->debug( $package ); $app->log->debug( $package );
$app->log->debug( $job );
load_class $package; load_class $package;
$app->minion->add_task( $app->minion->add_task(
$job => sub { $job => sub {
@ -27,7 +28,7 @@ sub register {
} }
); );
} }
# $app->minion->enqueue('test' => [ 'test arg 1', 'test_arg 2' ] ); # $app->minion->enqueue('test' => [ 'test arg 1', 'test_arg 2' ] );
} else { } else {
$app->log->debug('No Minion Config'); $app->log->debug('No Minion Config');
} }

View file

@ -0,0 +1,12 @@
package Pear::LocalLoop::Plugin::Minion::Job;
use Mojo::Base -base;
has [ qw/ job / ];
has app => sub { shift->job->app };
sub run {
die ( __PACKAGE__ . " must implement run sub" );
}
1;

View file

@ -0,0 +1,12 @@
package Pear::LocalLoop::Plugin::Minion::Job::leaderboards_recalc;
use Mojo::Base 'Pear::LocalLoop::Plugin::Minion::Job';
sub run {
my ( $self, @args ) = @_;
my $leaderboard_rs = $self->app->schema->resultset('Leaderboard');
$leaderboard_rs->recalculate_all;
}
1;

View file

@ -1,7 +1,5 @@
package Pear::LocalLoop::Plugin::Minion::Job::test; package Pear::LocalLoop::Plugin::Minion::Job::test;
use Mojo::Base -base; use Mojo::Base 'Pear::LocalLoop::Plugin::Minion::Job';
has [ qw/ job / ];
sub run { sub run {
my ( $self, @args ) = @_; my ( $self, @args ) = @_;