Commit a6c41c00 by Karl Kloppenborg

Adding in worker support

parent 6ada9cf5
......@@ -9,6 +9,8 @@ namespace :load do
# set :sneakers_timeout, -> { 10 }
set :sneakers_role, -> { :app }
set :sneakers_processes, -> { 1 }
set :sneakers_workers, -> { false } # if this is false it will cause Capistrano to exit
set :sneakers_run_config, -> { false } # if this is true sneakers will run with preconfigured /config/initializers/sneakers.rb
# Rbenv and RVM integration
set :rbenv_map_bins, fetch(:rbenv_map_bins).to_a.concat(%w(sneakers))
set :rvm_map_bins, fetch(:rvm_map_bins).to_a.concat(%w(sneakers))
......@@ -86,31 +88,41 @@ namespace :sneakers do
def start_sneakers(pid_file, idx = 0)
args = []
args.push "--index #{idx}"
args.push "--pidfile #{pid_file}"
args.push "--environment #{fetch(:sneakers_env)}"
args.push "--logfile #{fetch(:sneakers_log)}" if fetch(:sneakers_log)
args.push "--require #{fetch(:sneakers_require)}" if fetch(:sneakers_require)
args.push "--tag #{fetch(:sneakers_tag)}" if fetch(:sneakers_tag)
Array(fetch(:sneakers_queue)).each do |queue|
args.push "--queue #{queue}"
end
args.push "--config #{fetch(:sneakers_config)}" if fetch(:sneakers_config)
args.push "--concurrency #{fetch(:sneakers_concurrency)}" if fetch(:sneakers_concurrency)
# use sneakers_options for special options
args.push fetch(:sneakers_options) if fetch(:sneakers_options)
if defined?(JRUBY_VERSION)
args.push '>/dev/null 2>&1 &'
warn 'Since JRuby doesn\'t support Process.daemon, sneakers will not be running as a daemon.'
else
args.push '--daemon'
end
if fetch(:sneakers_run_config) == true
# Use sneakers configuration prebuilt in
raise "[ set :workers, ['worker1', 'workerN'] ] not configured properly, please configure the workers you wish to use" if fetch(:sneakers_workers).nil? or !fetch(:sneakers_workers).kind_of Array
if fetch(:start_sneakers_in_background, fetch(:sneakers_run_in_background))
background :bundle, :exec, :sneakers, args.compact.join(' ')
else
workers = fetch(:sneakers_workers).compact.join(',')
raise "Workers = #{workers}"
execute :bundle, :exec, :sneakers, args.compact.join(' ')
else
# Using custom sneakers setup
args.push "--index #{idx}"
args.push "--pidfile #{pid_file}"
args.push "--environment #{fetch(:sneakers_env)}"
args.push "--logfile #{fetch(:sneakers_log)}" if fetch(:sneakers_log)
args.push "--require #{fetch(:sneakers_require)}" if fetch(:sneakers_require)
args.push "--tag #{fetch(:sneakers_tag)}" if fetch(:sneakers_tag)
Array(fetch(:sneakers_queue)).each do |queue|
args.push "--queue #{queue}"
end
args.push "--config #{fetch(:sneakers_config)}" if fetch(:sneakers_config)
args.push "--concurrency #{fetch(:sneakers_concurrency)}" if fetch(:sneakers_concurrency)
# use sneakers_options for special options
args.push fetch(:sneakers_options) if fetch(:sneakers_options)
if defined?(JRUBY_VERSION)
args.push '>/dev/null 2>&1 &'
warn 'Since JRuby doesn\'t support Process.daemon, sneakers will not be running as a daemon.'
else
args.push '--daemon'
end
if fetch(:start_sneakers_in_background, fetch(:sneakers_run_in_background))
background :bundle, :exec, :sneakers, args.compact.join(' ')
else
execute :bundle, :exec, :sneakers, args.compact.join(' ')
end
end
end
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment