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]