Dancer2 0.204000 improves app config, content caching, and dependency management
Fresh off of Perl.Dance 2016 is Dancer2 0.204000. The latest version of Dancer2 is on its way to a CPAN mirror near you.
This version brings some compelling enhancements and features:
- Improved configuration handling (Jonathan Duff):
You can now create a local version of your configuration files which you then do not need to commit to any repository. If you create a file called config_local.yml
, you will have a local config.yml
. You can do the same with any configuration file, just change the filename to end with _local
.
You can now set the DANCER_CONFIG_EXT
environment variable in order to only load configuration files of a particular type (such as JSON). For example: DANCER_CONFIG_EXT=json plackup bin/app.psgi
You can now get some diagnostics information about loaded conifguration files by setting the DANCER_CONFIG_VERBOSE
environment variable to a true value.
- Improved static content caching:
Plack::Middleware::Static
does not, out of the box, send a 304 Not Modified
status for static resources that have not changed since they were last requested. By using Plack::Middleware::Conditional
and Plack::Middleware::ConditionalGET
, we were able to improve caching for users without a front-end static proxy (Theo van Hoesel).
Dependencies have been moved from
dist.ini
tocpanfile
, allowing developers to use [Carton] (https://metacpan.org/pod/Carton) to easily deploy and run Dancer2 apps entirely from a local or deployment directory.If you want to create a sample application skeleton that uses Template Toolkit-style variable markers (
[% %]
), you can now do so. App skeletons now use[d2% %2d]
for variables that Dancer2 needs to produce new application skeletons. Thanks, Jason Lewis!If you need full control of the
eval
s run by Dancer2 (if, for example, you write aneval
frame unrolling code), you can now provide your own code to be run via$EVAL_SHIM
. Thanks to Yves Orton (demerphq) for contributing!Numerous bug fixes and documentation improvements.
The full changelog is as follows:
0.204000 2016-10-10 20:56:51-05:00 America/Chicago
[ BUG FIXES ]
* GH #1255: Fix hook overriding in plugin. (Yves Orton)
* GH #1191: Named capture prior to dispatch breaks dispatch.
(Yves Orton)
* GH #1235: Clean up descriptions for HTTP codes 303 and 305.
(Yanick Champoux)
* Remove duplicate (and errornous) 451 error message.
(Sawyer X)
* GH #1116, #1245: Ensure cached Hash::MultiValue parameters are cloned
into the new request. (Russell @veryrusty Jenkins)
[ ENHANCEMENTS ]
* You can now provide a $EVAL_SHIM to Dancer2::Core::App in order
to have custom code run on eval{} calls. One example of this
is to handle proper counting of stack frames when you want to
unwind/unroll the stack for custom error reporting.
(Yves Orton)
* Added a cpanfile to allow installing local dependencies with
carton. (Mickey Nasriachi)
* GH #1260: Specify optional charset to send_file and send_as
(Russell @veryrusty Jenkins)
* PR #1162: Change skeleton template tags so skeletons can generate
applications that use Template Toolkit default tags (Jason Lewis)
* GH #1149: Fix config loading inconsistencies, support local config
files in addition to standard Dancer conf files (Jonathan Scott Duff)
* PR #1269: Stash decoded body_parameters separately from those
in Plack::Request (Russell @veryrusty Jenkins)
* GH #1253: Static middleware should send 304 Not Modified to enable
intermediate level caching. (Russell @veryrusty Jenkins)
[ DOCUMENTATION ]
* GH #608: Remove extra general COPYRIGHT notice in Tutorial.
(Sawyer X)
* Simplify upload example. (Alberto Simões, Sawyer X)
Thanks to all the sponsors, attendees, and speakers who participated in this year’s Dancer conference, Perl.Dance 2016. It was another highly successful conference, and we are already looking forward to next year’s gathering. We are currently working on the videos of this year’s talks, and hope to have them uploaded shortly.
If you have any questions, please find us at irc.perl.org#dancer. Happy Dancing!
Leave a comment