summary refs log tree commit diff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/presque/worker/Role/Job.pm7
-rw-r--r--lib/presque/worker/Role/Logger.pm37
-rw-r--r--lib/presque/worker/Role/Management.pm17
3 files changed, 47 insertions, 14 deletions
diff --git a/lib/presque/worker/Role/Job.pm b/lib/presque/worker/Role/Job.pm
index 6ce317c..3681580 100644
--- a/lib/presque/worker/Role/Job.pm
+++ b/lib/presque/worker/Role/Job.pm
@@ -9,7 +9,12 @@ sub _job_failure {
     push @{$job->{fail}}, $err;
     my $retries = ($job->{retries_left} || $self->job_retries) - 1;
     $job->{retries_left} = $retries;
-    $self->rest_retry_job($job) if $retries > 0;
+    try {
+        $self->retry_job(queue_name => '', $job) if $retries > 0;
+    }
+    catch {
+        # XXX
+    };
     $self->fail($job, $_) if $self->_has_fail_method;
 }
 
diff --git a/lib/presque/worker/Role/Logger.pm b/lib/presque/worker/Role/Logger.pm
index 4285b55..c33ae51 100644
--- a/lib/presque/worker/Role/Logger.pm
+++ b/lib/presque/worker/Role/Logger.pm
@@ -9,18 +9,37 @@ has logger => (
     isa     => 'Object',
     lazy    => 1,
     default => sub {
-        my $self = shift;
-        my $log  = Log::Dispatch->new();
-        $log->add(
-            Log::Dispatch::Screen->new(
-                name      => 'screen',
-                min_level => 'debug',
-                newline   => 1,
-            )
-        );
+        my $self    = shift;
+        my $context = $self->context;
+        my $logger  = Log::Dispatch->new();
+        if (my $log_conf = $context->{logger}) {
+            foreach my $log_type (keys %{$log_conf}) {
+                my $log_engine = $self->_load_log_engine($log_type);
+                my $_logger =
+                  $log_engine->new(%{$self->context->{log}->{$log_type}});
+                $logger->add($_logger);
+            }
+        }
+        else {
+            $log->add(
+                Log::Dispatch::Screen->new(
+                    name      => 'screen',
+                    min_level => 'debug',
+                    newline   => 1,
+                )
+            );
+        }
+        $log;
     }
 );
 
+sub _load_log_engine {
+    my ($self, $engine) = @_;
+    my $log_engine = "Log::Dispatch::" . ucfirst($engine);
+    Class::MOP::load_class($log_engine);
+    $log_engine;
+}
+
 before start => sub {
     my $self = shift;
 
diff --git a/lib/presque/worker/Role/Management.pm b/lib/presque/worker/Role/Management.pm
index cceea4e..c2a13fd 100644
--- a/lib/presque/worker/Role/Management.pm
+++ b/lib/presque/worker/Role/Management.pm
@@ -6,7 +6,7 @@ has shut_down => (is => 'rw', isa => 'Bool', default => 0,);
 
 before start => sub {
     my $self = shift;
-    $self->rest_register_worker;
+    $self->register_worker(worker_id => $self->worker_id);
     $SIG{INT}  = sub { $self->_shutdown };
     $SIG{TERM} = sub { $self->_shutdown };
     $SIG{QUIT} = sub { $self->_graceful_shutdown };
@@ -14,9 +14,18 @@ before start => sub {
     $SIG{CHLD} = 'IGNORE';
 };
 
-after start              => sub { (shift)->rest_unregister_worker; };
-after _graceful_shutdown => sub { (shift)->rest_unregister_worker; };
-after _shutdown          => sub { (shift)->rest_unregister_worker; };
+after start => sub {
+    my $self = shift;
+    $self->unregister_worker(worker_id => $self->worker_id);
+};
+after _graceful_shutdown => sub {
+    my $self = shift;
+    $self->unregister_worker(worker_id => $self->worker_id);
+};
+after _shutdown => sub {
+    my $self = shift;
+    $self->unregister_worker(worker_id => $self->worker_id);
+};
 
 sub _shutdown {
     my $self = shift;