adds capistrano tasks and hooks for delayed_jobs

This commit is contained in:
rgarcia
2015-09-03 23:26:28 +02:00
parent a5e7b1b166
commit feaf4465f3
2 changed files with 50 additions and 1 deletions

View File

@@ -27,7 +27,7 @@ set :pty, true
set :use_sudo, false set :use_sudo, false
set :linked_files, %w{config/database.yml config/secrets.yml} 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 set :keep_releases, 5
@@ -36,6 +36,9 @@ set :local_user, ENV['USER']
# Run test before deploy # Run test before deploy
set :tests, ["spec"] set :tests, ["spec"]
set :delayed_job_server_role, :worker
set :delayed_job_args, "-n 2"
# Config files should be copied by deploy:setup_config # Config files should be copied by deploy:setup_config
set(:config_files, %w( set(:config_files, %w(
log_rotation log_rotation
@@ -55,6 +58,8 @@ namespace :deploy do
after 'deploy:symlink:shared', 'deploy:compile_assets_locally' after 'deploy:symlink:shared', 'deploy:compile_assets_locally'
after :finishing, 'deploy:beta_testers' after :finishing, 'deploy:beta_testers'
after :finishing, 'deploy:cleanup' after :finishing, 'deploy:cleanup'
# Restart Delayed Job
after 'deploy:publishing', 'delayed_job:restart'
# Restart unicorn # Restart unicorn
after 'deploy:publishing', 'deploy:restart' after 'deploy:publishing', 'deploy:restart'
end end

View File

@@ -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