Snippets

Brian Medley Check for a moniker and a properly loaded application.

Created by Brian Medley
diff --git a/lib/Mojo/Server.pm b/lib/Mojo/Server.pm
index 58c9513..08c7866 100644
--- a/lib/Mojo/Server.pm
+++ b/lib/Mojo/Server.pm
@@ -50,9 +50,11 @@ sub load_app {
     local $ENV{MOJO_EXE};
 
     # Try to load application from script into sandbox
+    my $pkg = "Mojo::Server::Sandbox::@{[md5_sum $path]}";
     my $app = eval "package Mojo::Server::Sandbox::@{[md5_sum $path]};"
       . 'return do($path) || die($@ || $!);';
-    die qq{Can't load application from file "$path": $@} if !$app && $@;
+    my $moniker = eval 'no strict qw(refs); ${ \&{ "${pkg}::app" }->moniker };';
+    die qq{Can't load application from file "$path": $@} if !$moniker && !$app && $@;
     die qq{File "$path" did not return an application object.\n}
       unless blessed $app && $app->isa('Mojo');
     $self->app($app);

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.