Whilst trying to reduce the impact the loss of any one maintainer can
have, we were offered a solution to the DNS ownership problem by
DNSimple who kindly sponsored our DNS entry. This allows the three core
maintainers to have access to the DNS system incase changes need to be
made.
Part of the deal was including a link to DNSimple in the footer of the
site (as Hanamai, and others do).
I forgot, apparently to keep my end of the bargain, and during a recent
audit they've checked in with me to see if we're still making use of the
sponsored service. As I like DNSimple and find them to be very useful,
I'd like them to continue to sponsor us, and offer this tweak to the
doce to fulfil our obligations in that regard.
Users of the API may now add their own 'on'-filters by calling
Configuration#add_filter, e.g:
`Capistrano::Configuration.env.add_filter(RegionFilter.new('NE'))`.
An filter object passed into this method must respond to .filter, and
this method should accept an array of Server objects and return a subset
of this array.
Tests have been added that checks that:
* A filter can be added without throwing an error
* Trying to add a filter without a filter method throws a
TypeError
* An added filter is used to filter a list of servers
* add_filter accepts a block, and raises an ArgumentError
if passed both a block and an object.
This makes it much easier (no hacks needed) to determine whether the
user has installed an SCM plugin: simply check that the plugin responds
to `scm?` and that it returns true. A new SCM::Plugin base class makes
it easy to write such a plugin.
This commit also updates the website docs that explain how to write SCM
plugins so that they refer to this new technique.