Sha256: fc531d12d862e3b4904547ac1e9c9498083b7063b9dc06c1c67cafc97f7e5ddf
Contents?: true
Size: 1.89 KB
Versions: 13
Compression:
Stored size: 1.89 KB
Contents
# frozen_string_literal: true # These tasks are a drop-in replacement for capistrano-resque-pool when using # hot-swappable pools. We replace these tasks because the upstream ones assume a # pidfile is present, which is not the case with hot-swappable pools. namespace :load do task :defaults do # Same capistrano variable used by capistrano-resque-pool for compatibility set :resque_server_roles, fetch(:resque_server_roles, [:app]) end end # Integrate hook into Capistrano namespace :deploy do before :starting, :add_resque_pool_hotswap_hook do invoke 'resque:pool:add_hook' end end namespace :resque do namespace :pool do # Lifted from capistrano-resque-pool def rails_env fetch(:resque_rails_env) || fetch(:rails_env) || # capistrano-rails doesn't automatically set this (yet), fetch(:stage) # so we need to fall back to the stage. end # NOTE: no `desc` here to avoid publishing this task in the `cap -T` list task :add_hook do after 'deploy:publishing', 'resque:pool:hot_swap' end desc 'Swap in a new pool, then shut down the old pool' task :hot_swap do on roles(fetch(:resque_server_roles)) do within current_path do execute :bundle, :exec, 'resque-pool', "--daemon --hot-swap --environment #{rails_env}" end end end desc 'Gracefully shut down current pool' task :stop do on roles(fetch(:resque_server_roles)) do # This will usually return a single pid, but if you do multiple quick # deployments, you may pick up multiple pids here, in which case we only # kill the oldest one pid = capture(:pgrep, '-f resque-pool-master').split.first if test "kill -0 #{pid} > /dev/null 2>&1" execute :kill, "-s QUIT #{pid}" else warn "Process #{pid} is not running" end end end end end
Version data entries
13 entries across 13 versions & 1 rubygems