Escrevendo tarefas personalizadas para Capistrano 3

Capistrano é um ótimo Ruby Gem para automatizar implantações. Vamos criar uma tarefa para executar alguns comandos de banco de dados em um VPS.


Vou assumir que você já possui o capistrano 3 instalado em sua aplicação Rails.
Antes de criarmos a tarefa, vamos ver se seu Capfile importa arquivos de tarefas rake ou cap. Abra-o e verifique se você tem esta linha:

Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }

Ele está importando arquivos de tarefas rake, mas você também pode importar arquivos .cap rake.
Então, vamos criar um arquivo chamado db_tasks.rake no diretório lib / capistrano / tasks.

namespace :custom do
desc
'run some rake db task'
task
:run_db_task do
on roles
(:app) do
within
"#{current_path}" do
with rails_env
: "#{fetch(:stage)}" do
execute
:rake, "db:create"
end
end
end
end
end

Para executar esta tarefa, abra o terminal, vá para o diretório do aplicativo e execute o comando abaixo: </br>

$ cap production custom:run_db_task

Ele executará a tarefa rake: db_create dentro do diretório do aplicativo rails implantado com o estágio fornecido, neste caso, produção.


Está bem. Mas … E se eu quiser passar um parâmetro para minha tarefa? Vamos reescrever nossa tarefa para aceitar os parâmetros que virão do terminal.

namespace :custom do
desc
'run some rake db task with params'
task
:run_db_task, :param do
on roles
(:app) do
within
"#{current_path}" do
with rails_env
: "#{fetch(:stage)}" do
execute
:rake, args[:param]
end
end
end
end
end

Agora vamos executar esta tarefa no terminal: <br>

$ cap production custom:run_db_task[db:setup]

Então é isso. É assim que se cria uma tarefa personalizada para o capistrano 3 com parâmetros.


Para mais informações sobre o Capistrano, basta acessar o link abaixo: <br>

http://capistranorb.com/

Espero que você tenha gostado. Vou tentar escrever mais coisas sobre capistrano em breve.