require 'capistrano/helpers/base' require 'capistrano/helpers/delayed_job/template_paths' include Capistrano::Helpers::Base namespace :load do task :defaults do set :delayed_job_runit_base_service_name, 'delayed_job' # The number of workers to run # Will create X number of runit services/monit monitors. # Remember to purge/remove config before changing this value down # Default to 2 workers set :delayed_job_workers, 2 # The binary to trigger delayed job set :delayed_job_bin, 'bundle exec rake jobs:work' # runit defaults set :delayed_job_restart_interval, proc { fetch(:runit_restart_interval) } set :delayed_job_restart_count, proc { fetch(:runit_restart_count) } set :delayed_job_autorestart_clear_interval, proc { fetch(:runit_autorestart_clear_interval) } # runit templates set :delayed_job_runit_run_template, File.join(Capistrano::Helpers::DelayedJob::TemplatePaths.template_base_path, 'runit', 'run.erb') # rubocop:disable Metrics/LineLength set :delayed_job_runit_finish_template, File.join(Capistrano::Helpers::DelayedJob::TemplatePaths.template_base_path, 'runit', 'finish.erb') # rubocop:disable Metrics/LineLength set :delayed_job_runit_log_run_template, File.join(Capistrano::Helpers::DelayedJob::TemplatePaths.template_base_path, 'runit', 'log', 'run.erb') # rubocop:disable Metrics/LineLength # monit configuration set :delayed_job_monit_base_service_name, proc { "#{user_app_env_underscore}_delayed_job" } # Each worker would be likely to use at least 60-70mb ram for an app with many gems set :delayed_job_monit_memory_alert_threshold, '100.0 MB for 2 cycles' # Give the delayed_job_workers some headroom set :delayed_job_monit_memory_restart_threshold, '150.0 MB for 3 cycles' set :delayed_job_monit_cpu_alert_threshold, '90% for 2 cycles' set :delayed_job_monit_cpu_restart_threshold, '95% for 5 cycles' set :delayed_job_monit_config_template, File.join(Capistrano::Helpers::DelayedJob::TemplatePaths.template_base_path, 'monit', 'delayed_job.conf.erb') # rubocop:disable Metrics/LineLength set :monit_application_delayed_job_group_name, proc { "#{user_app_env_underscore}_delayed_job" } end end