If someone is using this gem on a daily basis and want to help maintain it, please let us know on the issues. We are moving away from capistrano deployments so in the short time we are not using this gem anymore.
Thanks!
Delayed Job support for Capistrano 3.x
Add this line to your application's Gemfile:
gem 'capistrano3-delayed-job', '~> 1.0'
gem 'capistrano'
And then execute:
$ bundle
Or install it yourself as:
$ gem install capistrano3-delayed-job
Require in Capfile
to use the default task:
require 'capistrano/delayed-job'
You will get the following tasks
cap delayed_job:restart # Restart the delayed_job process
cap delayed_job:start # Start the delayed_job process
cap delayed_job:status # Status of the delayed_job process
cap delayed_job:stop # Stop the delayed_job process
Configurable options (copy into deploy.rb), shown here with examples:
# Number of delayed_job workers
# default value: 1
set :delayed_job_workers, 2
# String to be prefixed to worker process names
# This feature allows a prefix name to be placed in front of the process.
# For example: reports/delayed_job.0 instead of just delayed_job.0
set :delayed_job_prefix, 'reports'
# Delayed_job queue or queues
# Set the --queue or --queues option to work from a particular queue.
# default value: nil
set :delayed_job_queues, ['mailer','tracking']
# Specify different pools
# You can use this option multiple times to start different numbers of workers
# for different queues.
# NOTE: When using delayed_job_pools, the settings for delayed_job_workers and
# delayed_job_queues are ignored.
# default value: nil
#
# Single pool of 3 workers looking at all queues: (when alone, '*' is a
# special case meaning any queue)
# set :delayed_job_pools, { '*' => 3 }
# set :delayed_job_pools, { '' => 3 }
# set :delayed_job_pools, { nil => 3 }
#
# Several queues, some with their own dedicated pools: (symbol keys will be
# converted to strings)
# set :delayed_job_pools, {
# :mailer => 2, # 2 workers looking only at the 'mailer' queue
# :tracking => 1, # 1 worker exclusively for the 'tracking' queue
# :* => 2 # 2 on any queue (including 'mailer' and 'tracking')
# }
#
# Several workers each handling one or more queues:
# set :delayed_job_pools, {
# 'high_priority' => 1, # one just for the important stuff
# 'high_priority,*' => 1, # never blocked by low_priority jobs
# 'high_priority,*,low_priority' => 1, # works on whatever is available
# '*,low_priority' => 1, # high_priority doesn't starve the little guys
# }
# Identification is assigned in order 0..3.
# Note that the '*' in this case is actually a queue with that name and does
# not mean any queue as it is not used alone, but alongside other queues.
# Set the roles where the delayed_job process should be started
# default value: :app
set :delayed_job_roles, [:app, :background]
# Set the location of the delayed_job executable
# Can be relative to the release_path or absolute
# default value: 'bin'
# set :delayed_job_bin_path, 'script' # for rails 3.x
# To pass the `-m` option to the delayed_job executable which will cause each
# worker to be monitored when daemonized.
# set :delayed_job_monitor, true
### Set the location of the delayed_job.log logfile
# default value: "#{Rails.root}/log" or "#{Dir.pwd}/log"
# set :delayed_log_dir, 'path_to_log_dir'
### Set the location of the delayed_job pid file(s)
# default value: "#{Rails.root}/tmp/pids" or "#{Dir.pwd}/tmp/pids"
# set :delayed_job_pid_dir, 'path_to_pid_dir'
It also adds the following hook
after 'deploy:published', 'restart' do
invoke 'delayed_job:restart'
end
Following setting is recommended to avoid stop/restart problem. See #16 or #22 for more detail.
set: linked_dirs, %w(tmp/pids)
# or
set :delayed_job_pid_dir, '/tmp'
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
Thank you contributors!
capistrano3-delayed-job is maintained by platanus.
capistrano3-delayed-job is © 2016 Platanus SpA. It is free software and may be redistributed under the terms specified in the LICENSE file.