namespace :backburner do
def backburner_args args = [] #args << "-n #{fetch(:backburner_workers)}" unless fetch(:backburner_workers).nil? args << "-q #{fetch(:backburner_queues).join(',')}" unless fetch(:backburner_queues).nil? args << "-P #{backburner_pid}" args << "-l #{backburner_log}" args << "-d" args.join(' ') end def backburner_roles fetch(:backburner_roles) end def backburner_bin 'backburner' end def backburner_pid fetch(:backburner_pid) end def backburner_log fetch(:backburner_log) end desc 'Stop the backburner process' task :stop do on roles(backburner_roles) do within release_path do with rails_env: fetch(:rails_env) do execute :bundle, :exec, backburner_bin, "-k -P #{backburner_pid}" end end end end desc 'Start the backburner process' task :start do on roles(backburner_roles) do within release_path do with rails_env: fetch(:rails_env) do execute :bundle, :exec, backburner_bin, backburner_args end end end end desc 'Restart the backburner process' task :restart do on roles(backburner_roles) do Rake::Task["backburner:stop"].invoke Rake::Task["backburner:start"].invoke end end after 'deploy:reverted', 'backburner:stop' after 'deploy:updated', 'backburner:stop' after 'deploy:published', 'backburner:start'
end
namespace :load do
task :defaults do set :backburner_pid, -> { File.join(shared_path, 'tmp', 'pids', 'backburner.pid') } set :backburner_log, -> { File.join(shared_path, 'log', 'backburner.log') } set :backburner_queues, nil set :backburner_roles, :app end
end