Criação de uma função de capataz para Rubber

Para criar uma nova função no Rubber, você precisa adicionar um arquivo rubber – # {role} .yml e implantar – # {role} .rb.

No meu caso, precisei migrar meu procfile para que os trabalhos atrasados ​​fossem executados pelo Foreman no EC2 (anteriormente hospedado no Heroku).

Verifique o código abaixo:

deploy-foreman.rb

namespace :rubber do
namespace :foreman do
desc
"Export the Procfile to Ubuntu's upstart scripts"
task
:export, roles: :foreman do
run
"cd #{current_path} && bundle exec foreman export upstart /etc/init -f ./Procfile -a foreman -u #{user} -l #{shared_path}/log"
end

desc
"Start the application services"
task
:start, roles: :foreman do
sudo
"service foreman start"
end

desc
"Stop the application services"
task
:stop, roles: :foreman do
sudo
"service foreman stop"
end

desc
"Restart the application services"
task
:restart, roles: :foreman do
run
"service foreman start || service foreman restart"
end
end
end

# Export foreman scripts
after
"deploy:update", "rubber:foreman:export"

# Restart application scripts
before
"deploy:restart", "rubber:foreman:restart"

# Restart application scripts
after
"deploy:stop", "rubber:foreman:stop"

Opcionalmente, você pode passar um parâmetro -c para o comando bundle exec para executar um processo foreman específico e o número de instâncias a serem iniciadas.

-c worker=1

Rubber-foreman.yml

gems: [foreman]