[Dancer-users] [RFC] Change in prefix / before functionality

Alessandro Ranellucci aar at cpan.org
Fri Apr 1 10:38:51 CEST 2011


On 1-04-2011 at 10:21, Richard Huxton wrote:

  >I've tried to do something similar to Simon too and been disappointed.
  >I was trying:
  >
  >load_app 'MyApp::Secret', prefix =>'/secret', before => &admin_only;
  >
  >I think the surprising thing is the fact that "before" spans packages.
  >Within a package, I'm happy with multiple occurrences 
chaining, but it
  >seems wrong for an included module to change global behaviour.

You're close. This will work as you need:

     package MyApp;
     before sub { ... };    # do something

     package MyApp::Secret;
     before sub { ... };    # do something else

     package main;
     load_app 'MyApp';
     load_app 'MyApp::Secret', prefix => '/secret';

'before' hooks are scoped to a single Dancer app. Note that 
splitting your application in packages is not sufficient to have 
Dancer see them as different 'apps': you have to load them using 
load_app(). Everything (well, almost) that happens during that 
load_app() call is scoped to that particular app and not to the 
global application.

Note that while this works correctly for the example you 
provided, there are some issues that you may be interested in:

https://github.com/sukria/Dancer/issues/421
https://github.com/sukria/Dancer/issues/425
https://github.com/sukria/Dancer/issues/429

Cheers,

     - al.



More information about the Dancer-users mailing list