Mojolicious Gardening

Meta-Slide

... but the container matters

Mojolicious Gardening

Let's get started

Components

Pushpin Application

ex/lite/pushpin.pl

ex/lite/pushpin.pl

ex/lite/pushpin.pl

ex/lite/pushpin.pl

ex/lite/pushpin.pl

ex/lite/pushpin.pl

ex/lite/pushpin.pl

ex/lite/pushpin.pl

ex/lite/pushpin.pl

ex/lite/pushpin.pl

ex/lite/pushpin.pl

ex/lite/pushpin.pl

Add two new variables

ex/lite-hybrid/pushpin.pl

Helper keyword ...

ex/lite/pushpin.pl

... becomes helper method

ex/lite-hybrid/pushpin.pl

And toplevel routes ...

ex/lite/pushpin.pl

... are created by router methods

ex/lite-hybrid/pushpin.pl

Use object tree routing instead

The Grouped Lite Routes Become ...

ex/lite/pushpin.pl

... A Proper Object Tree

ex/lite-hybrid/pushpin.pl

... A Proper Object Tree

ex/lite-hybrid/pushpin.pl

... A Proper Object Tree

ex/lite-hybrid/pushpin.pl

The Final Lite-Hybrid Script

ex/lite-hybrid/pushpin.pl

So now it's time to ...

... mostly moving stuff

ex/full-hybrid/lib/Pushpin.pm

ex/full-hybrid/script/pushpin

ex/full-hybrid/script/pushpin

Routes Point to Controllers

ex/full/lib/Pushpin.pm

Routes Point to Controllers

ex/full/lib/Pushpin.pm

App Attribute

ex/full/lib/Pushpin.pm

App Attribute

ex/full/lib/Pushpin.pm

ex/full/lib/Pushpin.pm

Admin Controller

ex/full/lib/Pushpin/Controller/Admin.pm

Admin Controller

ex/full/lib/Pushpin/Controller/Admin.pm

Admin Controller

ex/full/lib/Pushpin/Controller/Admin.pm

Admin Controller

ex/full/lib/Pushpin/Controller/Admin.pm

Pins Controller

ex/full/lib/Pushpin/Controller/Pins.pm

Model Class

ex/full-model/lib/Pushpin/Model/Pins.pm

Model Class

ex/full-model/lib/Pushpin/Model/Pins.pm

Model Class

ex/full-model/lib/Pushpin/Model/Pins.pm

Model Class

ex/full-model/lib/Pushpin/Model/Pins.pm

Model Helpers

ex/full/lib/Pushpin.pm

Model Helper

ex/full-model/lib/Pushpin.pm

Table Template

ex/full/templates/pins/table.html.ep

Table Template

ex/full/templates/pins/table.html.ep

Table Template

ex/full-model/templates/pins/table.html.ep

Controller Class

ex/full-model/lib/Pushpin/Controller/Pins.pm

Controller Class

ex/full-model/lib/Pushpin/Controller/Pins.pm

ex/full-model/templates/pins/map.html.ep

ex/full-model/public/pushpin.js

ex/full-model/public/pushpin.js

ex/full-model/public/pushpin.js

ex/full-model/public/pushpin.js