<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
span.EmailStyle17
{mso-style-type:personal-reply;
font-family:"Calibri","sans-serif";
color:#1F497D;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri","sans-serif";
mso-fareast-language:EN-US;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-GB" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">I was looking at the D2 documentation the other day, having trouble following them and I was going to put a request of some sort in in – but, from the description
below, it looks like the things that I was going to moan about have been addressed – so thankyou Snigdha!<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Daniel<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> dancer-users [mailto:dancer-users-bounces@dancer.pm]
<b>On Behalf Of </b>Sawyer X<br>
<b>Sent:</b> 06 February 2015 14:56<br>
<b>To:</b> Perl Dancer users mailing list<br>
<b>Subject:</b> [dancer-users] Snigdha Dagar's (our OPW participant) work has been merged!<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">Hi everyone,<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I had a few conferences, lots of work, and then, of course, I was under the weather, so not much was heard from me in a while. Consider yourselves lucky. :)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">However, having regained enough composure to finally merge the massive PR Snigdha Dagar has submitted as part of her work on overhauling the documentation, I'd like to share it with you, because it's too cool to keep to myself.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">First, you can view the entire thing here:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><a href="https://github.com/PerlDancer/Dancer2/commit/6eaa6a8136ad26c76a40c3aef49d86310e4474e1" target="_blank">https://github.com/PerlDancer/Dancer2/commit/6eaa6a8136ad26c76a40c3aef49d86310e4474e1</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">But you probably don't want to. Why? Here's the summary:<o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal">6 files changed, 2659 insertions(+), 1236 deletions(-).<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Why? Well... let me tell you what she did. She completely restructured the Manual and Cookbook. This included deciding what should go where, make it reachable from Dancer2.pm (what's rendered when you open up Dancer2 in MetaCPAN or perldoc),
and structure it within those documents in a coherent manner.<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">The Manual now covers:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">* Installation<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">* Bootstrapping<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">* How to use Dancer2, including:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> - The HTTP methods (including multi-methods)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> - All route definitions<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> - Prefixes<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> - Hooks<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> - Handlers<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> - Errors<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> - Sessions<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> - Templates<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> - Static files<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> - File uploads<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> - Configuration<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> - Logging<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">* How to test Dancer2<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">* How to package Dancer2, currently covering:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> - Carton<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> - FatPacker<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> (but more will be added)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">* How to add middlewares<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">* Plugins<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">And of course,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">* DSL keyword index<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">The Manual is now a proper Manual, explaining how Dancer should be used, which we could continue to expand so it covers explanations on any and all keywords as part of a guide you can read. You will still have the DSL keywords (which many
of us jump for when we want to find a keyword quickly) as well, which we will slowly be using to point to the parts in the Manual which cover the keyword's usage.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">The Cookbook now covers tricks and hints:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">* Splitting your application with prefix<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">* Using auto_page (AutoPage itself covered in the Manual - here is only a tip to use it)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">* Delivering custom error pages<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">* Using DBIx::Class<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">* Authentication<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">* Example for a REST application<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">* Recommendations on serializers<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">* Turning off warnings (under "Non-standard" :)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">* etc.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">If there's a tip you give others, or a pattern you found useful, this is where you could submit it so others could enjoy. It would fall under "cool stuff", rather than "the design of the framework". One describes the pieces and how they
interact. The other all the cool stuff you could do with them.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">The Deployment document (which existed in 1 and was merged into the Cookbook at 2 - not the right thing) is now its own separate document, includes everything in Dancer 1 and adds more:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">* Running as CGI or FastCGI<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">* Running on Perl web servers<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">* Using different service utilities (daemontools, Ubic, etc.)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">* Under a reverse proxy<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">* From Apache or Lighttpd<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">This is where we gather the knowledge of everyone deploying Dancer2 in various environments to make sure we have clear and useful instructions for the next person who wants to follow the same deployment pattern, and to offer examples of
how you could deploy your Dancer2 applications.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">The main module, Dancer2, now links to all of these so they are easily accessible. The DSL keyword index, since it is useful, is linked separately of the Manual, so we could find it much more quickly. This is something that nagged me personally.
I never remembered *where* it was documented, and now, even though it's the proper place, I don't have to remember. Perldoc Dancer2 and it's there.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I'd like to thank Snigdha for all the work she's done on this. It was not easy and included a lot of research before she could even begin reading the Dancer documents, comparing the changes between 1 and 2, making decisions about the structure,
and moving everything inch by inch. (There actually were a lot of commits, but I did squashed some commits together.)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Have a great day,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">S.<o:p></o:p></p>
</div>
</div>
</div>
</body>
</html>