my $db;
-sub safe_can_nodie {
+sub safe_can {
my ($type, $sub, $name) = @_;
- return unless $name =~ /^\w+$/s;
+ get_logger->logdie("Invalid \l$type: '$name'") unless $name =~ /^\w+$/s;
my $pkg = __PACKAGE__ . "::${type}::${name}";
eval "require $pkg" or get_logger->warn("Error while requiring $pkg: $@");
- $pkg->can($sub);
-}
-
-sub safe_can {
- my ($type, $sub, $name) = @_;
-
- safe_can_nodie @_ or get_logger->logdie("No such \l$type: '$name'");
+ $pkg->can($sub) or get_logger->logdie("No such \l$type: '$name'");
}
sub process{
problem => $jobr->problem,
owner => $jobr->owner,
job => $jobr->id,
- solved => $solved}) if !$jobr->problem->private;
+ solved => $solved}) if !$jobr->problem->is_private;
}
sub got_job{
$db = Gruntmaster::Data->connect($ENV{GRUNTMASTER_DSN} // 'dbi:Pg:');
Log::Log4perl->init('/etc/gruntmasterd/gruntmasterd-log.conf');
get_logger->info("gruntmasterd $VERSION started");
- chdir tempdir 'gruntmasterd.XXXX', CLEANUP => 1, TMPDIR => 1;
+ my $dir = tempdir 'gruntmasterd.XXXX', CLEANUP => 1, TMPDIR => 1;
+ chmod 0711, $dir;
+ chdir $dir;
while (1) {
my $job = $db->jobs->search({daemon => undef}, {rows => 1})->first;
got_job $job if defined $job;