[dancer-users] Dancer::Plugin::Auth::Extensible - possible backwards-incompatible change
Damien Krotkine
dkrotkine at gmail.com
Tue Dec 11 21:07:29 GMT 2012
Le mardi 11 décembre 2012 à 21:16, David Golden a écrit :
> > Hm you're right, I had not realized it'd be for *every* route. Indeed we
> > need more benchmark here :) But I like the attribute style. If it can help
> > in decision making, catalyst makes use of them as well, and it's rather
> > elegant.
> >
>
>
> Attribute style might be visually nice, but the implementation of
> attributes in Perl is really ugly hackery and many people (myself
> included) who have gotten into the weeds have concluded that it's just
> not worth the trouble.
>
> Personally, I would find the style below just as appealing if not more
> because it's guaranteed to follow Perl's grammar:
>
> get '/beer' => requires_role BeerDrinker => sub { ... };
>
> get '/user/:user_id' => requires_role qw/Admin TeamLeader/ => sub { ... };
>
> Plus, I can do this:
>
> my @power_users = qw/Admin TeamLeader/;
>
> get '/user/:user_id' => requires_role @power_users => sub { ... };
>
> You can't as easily do that with attributes because attribute
> parameters are strings that have to be parsed -- typically split on
> whitespace. You *could* parse looking for "@\w+" and then eval() it,
> but (a) that's gross and (b) you've got timing issues because the
> attribute is processed at compile time and the array isn't populated
> until runtime.
>
> And consider if you want to put your role names in a config file
> instead of the source code. How do you do that with attributes?
>
>
Use a huge BEGIN for parsing the config file ? :) Just kidding
>
> Have I convinced the doubters by now? :-)
I'm convinced :)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.preshweb.co.uk/pipermail/dancer-users/attachments/20121211/aed9911e/attachment.htm>
More information about the dancer-users
mailing list