Simple custom Action gives Mason compiler error

Hi,

this is my first attempt at creating a custom action perl module, its
very simple all I want it to do is to change the queue of tickets so
that I can call it from rt-crontool.

The code is as follows:

use strict;
use warnings;
use RT::Queue;
use base qw(RT::Action);

package RT::Action::Test;

my $self;

sub Prepare {
my $self = shift;

return 1;
}

sub Commit {
my $self = shift;

my $argument = $self->Argument;
unless ( $argument ) {
$RT::Logger->error(“Argument is mandatory for Test action”);
return 0;
}

my ($status, $msg) = $self->TicketObj->SetQueue("$argument");
if ( not $status ) {
RT::Logger->error(“Could not reassign queue: $msg”);
}

return 1;
}

1;

And the error I get when I restart Apache is:

[15029] [Sat Mar 21 14:55:32 2015] [warning]: (in cleanup) Error
while loading /usr/local/sbin/rt-server: The ‘compiler’ parameter
(“HTML::Mason::Compiler::ToObject=HASH(0x814eabdb0)”) to
HTML::Mason::Interp->new() was not a ‘HTML::Mason::Compiler’ (it is a
HTML::Mason::Compiler::ToObject=HASH(0x814eabdb0))
(/usr/local/lib/perl5/site_perl/RT.pm:390)

And RT is unavailable until I remove the perl module file and restart
Apache again. Intrestingly if I copy the perl module to the Action
directory while RT is up the perl module works, that is I can call it
from rt-crontool and it moves the tickets as desired.

Software versions are:

OS: FreeBSD 10.1
RT: 4.2.10
Perl: 5.18.4

As mentioned I’m a noob, any help much appreciated,

thanks, Andy.

its a bit dead on here!

In case this helps anyone I eventually got
this working after lots of trial and error:

package
RT::Action::QChange;

use strict;
use warnings;

use base
qw(RT::Action::Notify);

use Email::Address;

sub Prepare {
my $self =
shift;

return 1;
}

my $self;

sub Commit {

my $self = shift;

my
$argument = $self->Argument;
unless ( $argument ) {

$RT::Logger->error(“Argument is mandatory for Test action”);
return 0;

}

my ($status, $msg) = $self->TicketObj->SetQueue("$argument");
if (
not $status ) {
RT::Logger->error(“Could not reassign queue: $msg”);

return 0;
}

RT::Base->_ImportOverlays();

return 1;
}

1;