summaryrefslogtreecommitdiff
path: root/lib/PerlDaemon/RunModules.pm
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2011-06-02 09:14:07 +0000
committerPaul Buetow <paul@buetow.org>2011-06-02 09:14:07 +0000
commit90e682008264320189a7f0c8bf65f91c9f22b24e (patch)
tree619318b74c7904b785cb9d6678cea14b4c60f27b /lib/PerlDaemon/RunModules.pm
parent7940ed0177b210526662c698cadef26913ba0ed6 (diff)
Added module load error handling
Diffstat (limited to 'lib/PerlDaemon/RunModules.pm')
-rw-r--r--lib/PerlDaemon/RunModules.pm20
1 files changed, 14 insertions, 6 deletions
diff --git a/lib/PerlDaemon/RunModules.pm b/lib/PerlDaemon/RunModules.pm
index fe3d9ac..b57dc61 100644
--- a/lib/PerlDaemon/RunModules.pm
+++ b/lib/PerlDaemon/RunModules.pm
@@ -16,16 +16,24 @@ sub new ($$) {
$logger->logmsg("Loading modules from $modulesdir");
for my $module (<$modulesdir/*.pm>) {
$logger->logmsg("Loading $module");
- require $module;
+ eval "require '$module'";
+ $logger->warn("Could not load module source file $module: $@")
+ if defined $@ and length $@;
}
for my $name (grep /PerlDaemonModules/, keys %INC) {
$name =~ s#.*(PerlDaemonModules)/(.*)\.pm$#$1::$2#;
- $logger->logmsg("Creating module instance of $name");
- # TODO: Add eval catching jost un case for errors
- $loadedmodules{$name} = eval "${name}->new(\$conf)";
- $scheduler{$name}{lastrun} = [0,0];
- $scheduler{$name}{interval} = $conf->{'daemon.modules.runinterval'};
+ my $module = eval "${name}->new(\$conf)";
+
+ if (defined $@ and length $@) {
+ $logger->warn("Could not create module instance $name: $@");
+
+ } else {
+ $loadedmodules{$name} = $module;
+ $scheduler{$name}{lastrun} = [0,0];
+ $scheduler{$name}{interval} = $conf->{'daemon.modules.runinterval'};
+ $logger->logmsg("Created module instance $name");
+ }
}
} else {