capistrano/capistrano — pull request #717 by seenmyfate (2013-10-18 10:41:39+00:00)
Title: Introduce `no_release` server option

In order to provide a way for a server to perform tasks as part of a
deploy but without being involved in the standard deploy flow, all
included tasks will now prefer `release_roles` over `roles`. For
example:

on release_roles :all do
#
end

This behaviour is implemented using `exclude`, a new option when
selecting roles. `release_roles` is equivalent to:

on roles :all, exclude: :no_release do
#
end

Any server defined with `no_release: true` will be excluded from these
tasks:

server 'localhost', roles: %w{db}, no_release: true

`exclude` can also be used in user defined tasks against any attribute, for example:

server 'localhost', roles: %w{app web}, inactive: true

on roles :app, exclude: :inactive do
#
end

This commit resolves #686