State of the Ecosystem
At least 15 new plugins saw their first CPAN release in 2016 bringing the total number of Dancer2 plugins beyond the 70 mark.
2016 also saw many plugins converted to the new Plugin2
architecture. When
using the new Dancer2::Plugin plugins can now use other plugins and have
their DSL directly available. At the last count 20 plugins have been released
that use Plugin2
but there is still work to do. If you want to help out
checkout the related
GitHub issue.
Thankyou to everyone for contributing your code, and your time, to help make the Dancer2 ecosystem even better.
New Plugins in 2016
Auth::ActiveDirectory
Mario Zieschang gave us Dancer2::Plugin::Auth::ActiveDirectory in April. Thanks Mario!
I haven't played with this one myself as I don't have any Windows servers but it could be a good option for AD environments. See also Dancer2::Plugin::Auth::Extensible::Provider::LDAP.
Auth::Extensible::Provider::IMAP
In October Jason Lewis asked about an IMAP provider for Dancer2::Plugin::Auth::Extensible on the #dancer IRC channel. I like a challenge so decided to create one that afternoon. The result was released as: Dancer2::Plugin::Auth::Extensible::Provider::IMAP.
Auth::Extensible::Provider::LDAP
Although this existed in a git repo, it had no tests, was AD-specific and was not released to CPAN. In October I released a shiny new Dancer2::Plugin::Auth::Extensible::Provider::LDAP which tries to be a little more LDAP server agnostic (and also has a good number of tests). Thanks to J. Stebens (corecache) for feedback and testing it against OpenLDAP.
Auth::SAFE
Released whilst this article was being written on 29th November by Константин Матюхин (KVENTIN), Dancer2::Plugin::Auth::SAFE brings authentication via Thomson Reuters SAFE SSO to your Dancer app.
BeforeRoute
Michael CH Vu released his first Dancer2 version of his plugin
Dancer2::Plugin::BeforeRoute in August. This plugin allows you to add
before
hooks to specific routes.
Cart
Need a simple and flexible cart in your Dancer2 app? Need something that can work with a new or existing database? Maybe the new Cart plugin is for you.
Andrew Baerg and Ruben Amortegui made the first release of Dancer2::Plugin::Cart in July, and Andrew went on to give a talk about it at the Perl Dancer Conference in Vienna in September. You can find a demo app that Andrew created for his talk on GitHub.
Debugger
More than just a plugin, Dancer2::Debugger brings Stevan Little's Plack::Debugger to the Dancer2 ecosystem with extra Dancer-specific panels.
If you've ever used Marcel Grunauer's excellent Plack::Middleware::Debug with your Dancer1 apps then this is what you'll want to use with Dancer2.
I'm not completely happy with the internals of this thing but I needed it in a hurry and hopefully I'll find time soon for a cleanup. Released in April, you can find my conference talk here.
EncryptID
Rakesh Kumar Shardiwal's Dancer2::Plugin::EncryptID, released in July,
makes it easy to obfuscate internal IDs when using them in a URL given to
users. Instead of seeing http://example.com/item/42
users will instead
see http://example.com/item/c98ea08a8e8ad715
. This prevents nosy users
from trying to iterate all items based on a simple ID in the URL.
HTTP::Auth::Extensible
Theo van Hoesel released Dancer2::Plugin::HTTP::Auth::Extensible in January. This plugin is a fork of Dancer2::Plugin::Auth::Extensible but with authentication via WWW-Authenticate header instead of using form + session.
Interchange6
Part of the Interchange6 e-commerce project, Dancer2::Plugin::Interchange6 was released in May. Interchange6 is a project founded by long-time Interchange developer Stefan Hornburg (Racke).
The Interchange6 project has so far released the following components:
- Interchange6::Schema
A schema using DBIx::Class along with business logic.
- Interchange6
A cart built using Moo.
- Dancer2::Plugin::Interchange6
Links the schema with the cart and provides keywords for use in your webshop.
We're still working on a demo shop, due out Christmas. ;-)
Minify
Dancer2::Plugin::Minify is a wrapper for HTML::Packer, JavaScript::Packer and CSS::Packer. Released in April, thanks David Zurborg!
PageHistory
A port of my old Dancer1 plugin, Dancer2::Plugin::PageHistory was released
in June. The add_to_history
keyword which is exported by this plugin allows
you to add interesting items to the session-based history lists which are
returned using the history keyword.
Pg
Back in April, Lucas Tiago de Moraes released Dancer2::Plugin::Pg, another twist on relational database plugins.
See also: Dancer2::Plugin::Database and Dancer2::Plugin::DBIC.
Swagger2
Something I'd like to play with, Dancer2::Plugin::Swagger2 was released by Daniel Böhmer in March. This plugin creates routes directly from a Swagger (AKA OpenAPI) file. Neat.
Tail
Released in August, Jack Bilemjian's Dancer2::Plugin::Tail allows you to tail a file from within your Dancer2 application.
TemplateFlute
Dancer2::Plugin::TemplateFlute, along with its sister distro Dancer2::Template::TemplateFlute, brings Racke's Template::Flute forms to Dancer2. Released in May 2016, we needed this in order to port the Perl Dancer Conference website code from Dancer1.
Author
This article has been written by Peter Mottram for the Perl Dancer Advent Calendar 2016.
Copyright
No copyright retained. Enjoy.
2016 // Peter Mottram (SysPete) <peter@sysnix.com>