From feaf4465f3c32d147279044bebf399a53fcdf3d9 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Thu, 3 Sep 2015 23:26:28 +0200 Subject: [PATCH] adds capistrano tasks and hooks for delayed_jobs --- config/deploy.rb | 7 ++++- lib/capistrano/tasks/delayed_job.rake | 44 +++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 lib/capistrano/tasks/delayed_job.rake diff --git a/config/deploy.rb b/config/deploy.rb index 5a8ec62aa..adc38c917 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -27,7 +27,7 @@ set :pty, true set :use_sudo, false set :linked_files, %w{config/database.yml config/secrets.yml} -set :linked_dirs, %w{log tmp public/system public/assets} +set :linked_dirs, %w{log tmp public/system public/assets tmp/pids} set :keep_releases, 5 @@ -36,6 +36,9 @@ set :local_user, ENV['USER'] # Run test before deploy set :tests, ["spec"] +set :delayed_job_server_role, :worker +set :delayed_job_args, "-n 2" + # Config files should be copied by deploy:setup_config set(:config_files, %w( log_rotation @@ -55,6 +58,8 @@ namespace :deploy do after 'deploy:symlink:shared', 'deploy:compile_assets_locally' after :finishing, 'deploy:beta_testers' after :finishing, 'deploy:cleanup' + # Restart Delayed Job + after 'deploy:publishing', 'delayed_job:restart' # Restart unicorn after 'deploy:publishing', 'deploy:restart' end diff --git a/lib/capistrano/tasks/delayed_job.rake b/lib/capistrano/tasks/delayed_job.rake new file mode 100644 index 000000000..e134a32c9 --- /dev/null +++ b/lib/capistrano/tasks/delayed_job.rake @@ -0,0 +1,44 @@ +namespace :delayed_job do + + def args + fetch(:delayed_job_args, "") + end + + def delayed_job_roles + fetch(:delayed_job_server_role, :app) + end + + desc 'Stop the delayed_job process' + task :stop do + on roles(delayed_job_roles) do + within release_path do + with rails_env: fetch(:rails_env) do + execute :bundle, :exec, :'bin/delayed_job', :stop + end + end + end + end + + desc 'Start the delayed_job process' + task :start do + on roles(delayed_job_roles) do + within release_path do + with rails_env: fetch(:rails_env) do + execute :bundle, :exec, :'bin/delayed_job', args, :start + end + end + end + end + + desc 'Restart the delayed_job process' + task :restart do + on roles(delayed_job_roles) do + within release_path do + with rails_env: fetch(:rails_env) do + execute :bundle, :exec, :'bin/delayed_job', args, :restart + end + end + end + end + +end \ No newline at end of file