useful errors on misused middleware in route definitions
[catagits/Web-Simple.git] / lib / Web / Dispatch.pm
index 5da5854..d1b57c9 100644 (file)
@@ -121,6 +121,10 @@ sub _to_try {
   } elsif (!ref($try) and ref($more->[0]) eq 'CODE') {
     $self->_construct_node(match => $try, run => shift(@$more))->to_app;
   } elsif (
+    !ref($try) and blessed($more->[0]) and $more->[0]->isa('Plack::Middleware')
+  ) {
+    die "Middleware needs to be wrapped in a sub.";
+  } elsif (
     (blessed($try) && $try->isa('Web::Dispatch::Matcher'))
     and (ref($more->[0]) eq 'CODE')
   ) {
@@ -129,6 +133,8 @@ sub _to_try {
       match => $try,
       run => shift(@$more)
     })->to_app;
+  } elsif (blessed($try) && $try->isa('Plack::Middleware')) {
+    die "Middleware needs a route definition and has to be wrapped in a sub.";
   } elsif (blessed($try) && $try->can('to_app')) {
     $try->to_app;
   } else {