<html><body><div style="font-family: times new roman, new york, times, serif; font-size: 12pt; color: #000000"><div>Or we can push in a role the common part only between each module.<br></div><div><br></div><div>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.<br></div><div><br></div><hr id="zwchr"><div style="color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt;" data-mce-style="color: #000; font-weight: normal; font-style: normal; text-decoration: none; font-family: Helvetica,Arial,sans-serif; font-size: 12pt;"><b>De: </b>"Alex C" <calyx238@gmail.com><br><b>À: </b>"Perl Dancer users mailing list" <dancer-users@dancer.pm><br><b>Envoyé: </b>Vendredi 28 Décembre 2012 19:28:41<br><b>Objet: </b>Re: [dancer-users] Route dispatch<br><div><br></div><div>In my case, that would mean consuming 20+ roles into the same package, and I lose the benefit of package-scoping.</div><div><br></div><div>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.</div><br><div class="gmail_quote">On 28 December 2012 17:58, Celogeek <span dir="ltr"><<a href="mailto:me@celogeek.com" target="_blank" data-mce-href="mailto:me@celogeek.com">me@celogeek.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex" data-mce-style="margin: 0 0 0 .8ex; border-left: 1px #ccc solid; padding-left: 1ex;"><div><div style="font-size:12pt;font-family:times new roman,new york,times,serif" data-mce-style="font-size: 12pt; font-family: times new roman,new york,times,serif;"><div><br>solution is to have only one Apps.<br></div><div><br></div><div>And transform each submodule into a Moo::Role.<br></div><div><br></div><div>may be<br></div><div><br></div><hr><div style="font-size:12pt;font-style:normal;font-family:Helvetica,Arial,sans-serif;text-decoration:none;font-weight:normal" data-mce-style="font-size: 12pt; font-style: normal; font-family: Helvetica,Arial,sans-serif; text-decoration: none; font-weight: normal;"><b>De: </b>"Alex C" <<a href="mailto:calyx238@gmail.com" target="_blank" data-mce-href="mailto:calyx238@gmail.com">calyx238@gmail.com</a>><br> <b>À: </b>"Perl Dancer users mailing list" <<a href="mailto:dancer-users@dancer.pm" target="_blank" data-mce-href="mailto:dancer-users@dancer.pm">dancer-users@dancer.pm</a>><br><b>Envoyé: </b>Vendredi 28 Décembre 2012 18:46:16<br><b>Objet: </b>Re: [dancer-users] Route dispatch<br><div><br></div>Now I understand what you mean. I also separate my routes into differnet modules, like this:<div><br></div><div><div># in MyApp::Controller</div><div><br></div><div>hook before { var foo => 'bar' };</div><div><br></div><div>get '/' => \&MyApp::Controller::Root;</div><div><br></div><div># MyApp::Controller::Root</div><div><br></div><div>get '/' => sub {</div><div> my $var = vars->{foo};</div><div> ...</div><div>};</div><div><br></div><div>I have yet to play with Dancer 2 but I expect I will have the same problems as you!</div></div><div><br></div><div>I hope there is an easy solution to this or I cannot migrate to Dancer 2.</div><div><br></div><br><div class="gmail_quote">On 28 December 2012 17:37, Celogeek <span dir="ltr"><<a href="mailto:me@celogeek.com" target="_blank" data-mce-href="mailto:me@celogeek.com">me@celogeek.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex" data-mce-style="margin: 0 0 0 .8ex; border-left: 1px #ccc solid; padding-left: 1ex;"><div><div style="font-size:12pt;font-family:times new roman,new york,times,serif" data-mce-style="font-size: 12pt; font-family: times new roman,new york,times,serif;"><div>this doesn't work with Dancer2 due to context.<br></div><div>the hook is for route in App::Main<br></div><div>so it doesn't fire with the App::Root routes<br></div><div><br></div><div><br></div><hr><div style="font-size:12pt;font-style:normal;font-family:Helvetica,Arial,sans-serif;text-decoration:none;font-weight:normal" data-mce-style="font-size: 12pt; font-style: normal; font-family: Helvetica,Arial,sans-serif; text-decoration: none; font-weight: normal;"><b>De: </b>"Alex C" <<a href="mailto:calyx238@gmail.com" target="_blank" data-mce-href="mailto:calyx238@gmail.com">calyx238@gmail.com</a>><br> <b>À: </b>"Perl Dancer users mailing list" <<a href="mailto:dancer-users@dancer.pm" target="_blank" data-mce-href="mailto:dancer-users@dancer.pm">dancer-users@dancer.pm</a>><br><b>Envoyé: </b>Vendredi 28 Décembre 2012 18:33:57<br><b>Objet: </b>Re: [dancer-users] Route dispatch<br><div><br></div>Sorry I have no experience with Dancer 2 or multiple contexts.<div><br></div><div>This works on Dancer 1, if it is any help:</div><div><br></div><div><div>#!/usr/bin/env perl</div><div><br></div><div>use Dancer;</div><div><br></div><div>{</div><div> package App::Main;</div><div> use Dancer ':syntax';</div><div> hook before => sub { var xxx => "test" };</div><div> 1;</div><div>}</div><div><br></div><div>{</div><div> package App::Root;</div><div> use Dancer ':syntax';</div><div> get "/" => sub { return vars->{xxx} };</div><div> 1;</div><div>}</div><div><br></div><div>start;</div><div><br></div><div>Good luck..</div><br><div class="gmail_quote">On 28 December 2012 17:25, Celogeek <span dir="ltr"><<a href="mailto:me@celogeek.com" target="_blank" data-mce-href="mailto:me@celogeek.com">me@celogeek.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex" data-mce-style="margin: 0 0 0 .8ex; border-left: 1px #ccc solid; padding-left: 1ex;"><div><div style="font-size:12pt;font-family:times new roman,new york,times,serif" data-mce-style="font-size: 12pt; font-family: times new roman,new york,times,serif;"><div>it's just a not working short example :)<br></div><div><br></div><div>but Dancer use context, so in my App::Main I have a before hooks that only apply to the route present in App::Main.<br></div><div><br></div><div>So my App::Root doesn't have it. And it was the case in Dancer 1.<br></div><div><br></div><div>I need to fully change my apps to make it work with Dancer2<br></div><div><br></div><hr><div style="font-size:12pt;font-style:normal;font-family:Helvetica,Arial,sans-serif;text-decoration:none;font-weight:normal" data-mce-style="font-size: 12pt; font-style: normal; font-family: Helvetica,Arial,sans-serif; text-decoration: none; font-weight: normal;"><b>De: </b>"Alex C" <<a href="mailto:calyx238@gmail.com" target="_blank" data-mce-href="mailto:calyx238@gmail.com">calyx238@gmail.com</a>><br><b>À: </b>"Perl Dancer users mailing list" <<a href="mailto:dancer-users@dancer.pm" target="_blank" data-mce-href="mailto:dancer-users@dancer.pm">dancer-users@dancer.pm</a>><br> <b>Envoyé: </b>Vendredi 28 Décembre 2012 18:18:12<br><b>Objet: </b>Re: [dancer-users] Route dispatch<br><div><br></div>Yuo are missing the semicolons after your sub declarations. Try it agian ;)<br><div><br></div><div class="gmail_quote">On 28 December 2012 15:57, Celogeek <span dir="ltr"><<a href="mailto:me@celogeek.com" target="_blank" data-mce-href="mailto:me@celogeek.com">me@celogeek.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex" data-mce-style="margin: 0 0 0 .8ex; border-left: 1px #ccc solid; padding-left: 1ex;"><div><div style="font-size:12pt;font-family:times new roman,new york,times,serif" data-mce-style="font-size: 12pt; font-family: times new roman,new york,times,serif;"><div>Can I dispatch my root thought multiple module ?<br></div><div><br></div><div>I have in App::Main : <br></div><div><br></div><div>hook before => sub {<br></div><div>var xxx => "test";<br></div><div>}<br></div><div><br></div><div>and in App::Root;<br></div><div><br></div><div>get "/" => sub {<br></div><div> return vars->{xxx}<br></div><div>}<br></div><div><br></div><div>But vars seems empty.<br></div><div><br></div><div>In my bin/app.psgi I have :<br></div><div><br></div><div>use Dancer;<br></div><div>use App::Main;<br></div><div>use App::Root;<br></div><div><br></div><div>start;<br></div><div><br></div><div><br></div></div></div><br>_______________________________________________<br> dancer-users mailing list<br> <a href="mailto:dancer-users@dancer.pm" target="_blank" data-mce-href="mailto:dancer-users@dancer.pm">dancer-users@dancer.pm</a><br> <a href="http://lists.preshweb.co.uk/mailman/listinfo/dancer-users" target="_blank" data-mce-href="http://lists.preshweb.co.uk/mailman/listinfo/dancer-users">http://lists.preshweb.co.uk/mailman/listinfo/dancer-users</a><br> <br></blockquote></div><br> <br>_______________________________________________<br> dancer-users mailing list<br><a href="mailto:dancer-users@dancer.pm" target="_blank" data-mce-href="mailto:dancer-users@dancer.pm">dancer-users@dancer.pm</a><br><a href="http://lists.preshweb.co.uk/mailman/listinfo/dancer-users" target="_blank" data-mce-href="http://lists.preshweb.co.uk/mailman/listinfo/dancer-users">http://lists.preshweb.co.uk/mailman/listinfo/dancer-users</a><br></div><div><br></div></div></div><br>_______________________________________________<br> dancer-users mailing list<br> <a href="mailto:dancer-users@dancer.pm" target="_blank" data-mce-href="mailto:dancer-users@dancer.pm">dancer-users@dancer.pm</a><br> <a href="http://lists.preshweb.co.uk/mailman/listinfo/dancer-users" target="_blank" data-mce-href="http://lists.preshweb.co.uk/mailman/listinfo/dancer-users">http://lists.preshweb.co.uk/mailman/listinfo/dancer-users</a><br> <br></blockquote></div><br></div><br>_______________________________________________<br>dancer-users mailing list<br><a href="mailto:dancer-users@dancer.pm" target="_blank" data-mce-href="mailto:dancer-users@dancer.pm">dancer-users@dancer.pm</a><br><a href="http://lists.preshweb.co.uk/mailman/listinfo/dancer-users" target="_blank" data-mce-href="http://lists.preshweb.co.uk/mailman/listinfo/dancer-users">http://lists.preshweb.co.uk/mailman/listinfo/dancer-users</a><br></div><div><br></div></div></div><br>_______________________________________________<br> dancer-users mailing list<br> <a href="mailto:dancer-users@dancer.pm" target="_blank" data-mce-href="mailto:dancer-users@dancer.pm">dancer-users@dancer.pm</a><br> <a href="http://lists.preshweb.co.uk/mailman/listinfo/dancer-users" target="_blank" data-mce-href="http://lists.preshweb.co.uk/mailman/listinfo/dancer-users">http://lists.preshweb.co.uk/mailman/listinfo/dancer-users</a><br> <br></blockquote></div><br> <br>_______________________________________________<br>dancer-users mailing list<br><a href="mailto:dancer-users@dancer.pm" target="_blank" data-mce-href="mailto:dancer-users@dancer.pm">dancer-users@dancer.pm</a><br><a href="http://lists.preshweb.co.uk/mailman/listinfo/dancer-users" target="_blank" data-mce-href="http://lists.preshweb.co.uk/mailman/listinfo/dancer-users">http://lists.preshweb.co.uk/mailman/listinfo/dancer-users</a><br></div><div><br></div></div></div><br>_______________________________________________<br> dancer-users mailing list<br> <a href="mailto:dancer-users@dancer.pm" target="_blank" data-mce-href="mailto:dancer-users@dancer.pm">dancer-users@dancer.pm</a><br> <a href="http://lists.preshweb.co.uk/mailman/listinfo/dancer-users" target="_blank" data-mce-href="http://lists.preshweb.co.uk/mailman/listinfo/dancer-users">http://lists.preshweb.co.uk/mailman/listinfo/dancer-users</a><br> <br></blockquote></div><br> <br>_______________________________________________<br>dancer-users mailing list<br>dancer-users@dancer.pm<br>http://lists.preshweb.co.uk/mailman/listinfo/dancer-users<br></div><div><br></div></div></body></html>