Sha256: 8ddb5a85f93af3748b5e52f9ba50d9abcc7506a2e0f48a3b2c3f657d9b0201e1
Contents?: true
Size: 1.88 KB
Versions: 1
Compression:
Stored size: 1.88 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:restart', '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
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
dlss-capistrano-3.10.0 | lib/dlss/capistrano/resque_pool/tasks/resque_pool.rake |