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>
Espero que você tenha gostado. Vou tentar escrever mais coisas sobre capistrano em breve.