Когда вы определяете задачу в Capistrano, вы можете ограничить выполнение задачи конкретными ролями.Это можно сделать, передав параметр :role
.
Похоже, что рецепт по умолчанию delayed_job Capistrano делает это.
desc "Stop the delayed_job process"
task :stop, :roles => lambda { roles } do
run "cd #{current_path};#{rails_env} script/delayed_job stop"
end
Согласно исходному кодузадача получает список ролей из переменной конфигурации :delayed_job_server_role
.
Возвращаясь к вашей проблеме, чтобы сузить выполнение задач до определенной группы серверов, определите новую роль (например, рабочий)в вашем deploy.rb
role :worker, "192.168.1.1" # Assign the IP of your machine
Затем установите :delayed_job_server_role
на это имя
set :delayed_job_server_role, :worker
Вот и все.Теперь задачи будут выполняться, но только для серверов, перечисленных в роли :worker
.