[dancer-users] Route dispatch
Alex C
calyx238 at gmail.com
Fri Dec 28 18:48:33 GMT 2012
Like this?
package MyApp::Role::Hooks;
hook before { var foo => 'bar' };
package MyApp::Routes::RouteA;
with 'MyApp::Role::Hooks';
get '/A' => sub { return vars->{foo} };
package MyApp::Routes::RouteB;
with 'MyApp::Role::Hooks';
get '/B' => sub { return vars->{foo} };
I hope that works because it looks elegant.
On 28 December 2012 18:35, Celogeek <me at celogeek.com> wrote:
> Or we can push in a role the common part only between each module.
>
> For example, in my case, I have a common "before" hooks which initialize
> the redis connexion. So I can put this in a role, and that it.
>
> ------------------------------
> *De: *"Alex C" <calyx238 at gmail.com>
> *À: *"Perl Dancer users mailing list" <dancer-users at dancer.pm>
> *Envoyé: *Vendredi 28 Décembre 2012 19:28:41
> *Objet: *Re: [dancer-users] Route dispatch
>
> In my case, that would mean consuming 20+ roles into the same package, and
> I lose the benefit of package-scoping.
>
> I think there are many people who have spread their Dancer 1 routes across
> many packages. I would like to know the recommended best practice for
> migrating such apps to D2.
>
> On 28 December 2012 17:58, Celogeek <me at celogeek.com> wrote:
>
>>
>> solution is to have only one Apps.
>>
>> And transform each submodule into a Moo::Role.
>>
>> may be
>>
>> ------------------------------
>> *De: *"Alex C" <calyx238 at gmail.com>
>> *À: *"Perl Dancer users mailing list" <dancer-users at dancer.pm>
>> *Envoyé: *Vendredi 28 Décembre 2012 18:46:16
>> *Objet: *Re: [dancer-users] Route dispatch
>>
>> Now I understand what you mean. I also separate my routes into differnet
>> modules, like this:
>>
>> # in MyApp::Controller
>>
>> hook before { var foo => 'bar' };
>>
>> get '/' => \&MyApp::Controller::Root;
>>
>> # MyApp::Controller::Root
>>
>> get '/' => sub {
>> my $var = vars->{foo};
>> ...
>> };
>>
>> I have yet to play with Dancer 2 but I expect I will have the same
>> problems as you!
>>
>> I hope there is an easy solution to this or I cannot migrate to Dancer 2.
>>
>>
>> On 28 December 2012 17:37, Celogeek <me at celogeek.com> wrote:
>>
>>> this doesn't work with Dancer2 due to context.
>>> the hook is for route in App::Main
>>> so it doesn't fire with the App::Root routes
>>>
>>>
>>> ------------------------------
>>> *De: *"Alex C" <calyx238 at gmail.com>
>>> *À: *"Perl Dancer users mailing list" <dancer-users at dancer.pm>
>>> *Envoyé: *Vendredi 28 Décembre 2012 18:33:57
>>> *Objet: *Re: [dancer-users] Route dispatch
>>>
>>> Sorry I have no experience with Dancer 2 or multiple contexts.
>>>
>>> This works on Dancer 1, if it is any help:
>>>
>>> #!/usr/bin/env perl
>>>
>>> use Dancer;
>>>
>>> {
>>> package App::Main;
>>> use Dancer ':syntax';
>>> hook before => sub { var xxx => "test" };
>>> 1;
>>> }
>>>
>>> {
>>> package App::Root;
>>> use Dancer ':syntax';
>>> get "/" => sub { return vars->{xxx} };
>>> 1;
>>> }
>>>
>>> start;
>>>
>>> Good luck..
>>>
>>> On 28 December 2012 17:25, Celogeek <me at celogeek.com> wrote:
>>>
>>>> it's just a not working short example :)
>>>>
>>>> but Dancer use context, so in my App::Main I have a before hooks that
>>>> only apply to the route present in App::Main.
>>>>
>>>> So my App::Root doesn't have it. And it was the case in Dancer 1.
>>>>
>>>> I need to fully change my apps to make it work with Dancer2
>>>>
>>>> ------------------------------
>>>> *De: *"Alex C" <calyx238 at gmail.com>
>>>> *À: *"Perl Dancer users mailing list" <dancer-users at dancer.pm>
>>>> *Envoyé: *Vendredi 28 Décembre 2012 18:18:12
>>>> *Objet: *Re: [dancer-users] Route dispatch
>>>>
>>>> Yuo are missing the semicolons after your sub declarations. Try it
>>>> agian ;)
>>>>
>>>> On 28 December 2012 15:57, Celogeek <me at celogeek.com> wrote:
>>>>
>>>>> Can I dispatch my root thought multiple module ?
>>>>>
>>>>> I have in App::Main :
>>>>>
>>>>> hook before => sub {
>>>>> var xxx => "test";
>>>>> }
>>>>>
>>>>> and in App::Root;
>>>>>
>>>>> get "/" => sub {
>>>>> return vars->{xxx}
>>>>> }
>>>>>
>>>>> But vars seems empty.
>>>>>
>>>>> In my bin/app.psgi I have :
>>>>>
>>>>> use Dancer;
>>>>> use App::Main;
>>>>> use App::Root;
>>>>>
>>>>> start;
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> dancer-users mailing list
>>>>> dancer-users at dancer.pm
>>>>> http://lists.preshweb.co.uk/mailman/listinfo/dancer-users
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> dancer-users mailing list
>>>> dancer-users at dancer.pm
>>>> http://lists.preshweb.co.uk/mailman/listinfo/dancer-users
>>>>
>>>>
>>>> _______________________________________________
>>>> dancer-users mailing list
>>>> dancer-users at dancer.pm
>>>> http://lists.preshweb.co.uk/mailman/listinfo/dancer-users
>>>>
>>>>
>>>
>>> _______________________________________________
>>> dancer-users mailing list
>>> dancer-users at dancer.pm
>>> http://lists.preshweb.co.uk/mailman/listinfo/dancer-users
>>>
>>>
>>> _______________________________________________
>>> dancer-users mailing list
>>> dancer-users at dancer.pm
>>> http://lists.preshweb.co.uk/mailman/listinfo/dancer-users
>>>
>>>
>>
>> _______________________________________________
>> dancer-users mailing list
>> dancer-users at dancer.pm
>> http://lists.preshweb.co.uk/mailman/listinfo/dancer-users
>>
>>
>> _______________________________________________
>> dancer-users mailing list
>> dancer-users at dancer.pm
>> http://lists.preshweb.co.uk/mailman/listinfo/dancer-users
>>
>>
>
> _______________________________________________
> dancer-users mailing list
> dancer-users at dancer.pm
> http://lists.preshweb.co.uk/mailman/listinfo/dancer-users
>
>
> _______________________________________________
> dancer-users mailing list
> dancer-users at dancer.pm
> http://lists.preshweb.co.uk/mailman/listinfo/dancer-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.preshweb.co.uk/pipermail/dancer-users/attachments/20121228/b36a45ec/attachment.htm>
More information about the dancer-users
mailing list