about summary refs log tree commit diff
path: root/lib/presque/Role/RequireQueue.pm
blob: f9e6ec73e83cce794064ffb0fa19e3c79474a421 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package presque::Role::RequireQueue;

use MooseX::Role::Parameterized;

parameter methods => (
    isa      => 'ArrayRef',
    required => 1,
);

role {
    my $p = shift;

    my $methods = $p->methods;

    foreach my $m (@$methods) {
        around $m => sub {
            my $orig       = shift;
            my $self       = shift;
            my $queue_name = shift;

            return $self->http_error_queue if !$queue_name;

            $self->$orig($queue_name, @_);
        };
    }
};

1;