Executando uma tarefa Rake durante uma implantação Rails 4 usando Capistrano 3

Parece haver várias maneiras diferentes postadas online para fazer uma tarefa Rake rodar durante uma implantação Rails usando Capistrano 3.

Isso é o que funcionou para mim, e acho que é mais limpo do que muitas das soluções que vi postadas no SO ou semelhante.

Digamos que você tenha uma tarefa Rake com a qual possa executar localmente rake system:update_rules. Em seguida, você deseja adicionar o seguinte ao seu deploy.rb :

namespace :system do
desc
'Update the system rules '
task
:update_rules do
on roles
(:all) do
within release_path
do
with rails_env
: fetch(:rails_env) do
execute
:rake, 'system:update_rules'
end
end
end
end
end

Então, no topo do seu deploy.rb, coloque:

after 'deploy:published', 'system:update_rules'

Isso será executado depois que a implantação terminar tudo o mais, o que garante que as alterações feitas em sua aplicação serão refletidas quando Capistrano executar a tarefa.