diff --git a/Changes.md b/Changes.md index 48d059b6..d61645ec 100644 --- a/Changes.md +++ b/Changes.md @@ -16,7 +16,9 @@ Please see [Upgrading.md](Upgrading.md) for more comprehensive upgrade notes. occur anywhere within Sidekiq, not just within middleware. - **Process Heartbeat** - each Sidekiq process will ping Redis every 5 seconds to give a summary of the Sidekiq population at work. -- **Remove official support for Ruby 1.9** Things still might work but +- **Remove official Capistrano integration** - this integration has been + moved into the capistrano-sidekiq gem. +- **Remove official support for Ruby 1.9** - Things still might work but I no longer actively test on it. - **Remove built-in support for Redis-to-Go**. Heroku users: `heroku config:set REDIS_PROVIDER=REDISTOGO_URL` diff --git a/lib/sidekiq/capistrano.rb b/lib/sidekiq/capistrano.rb deleted file mode 100644 index 82fd4b2c..00000000 --- a/lib/sidekiq/capistrano.rb +++ /dev/null @@ -1,5 +0,0 @@ -if defined?(Capistrano::VERSION) && Gem::Version.new(Capistrano::VERSION).release >= Gem::Version.new('3.0.0') - load File.expand_path("../tasks/sidekiq.rake", __FILE__) -else - require_relative 'capistrano2' -end diff --git a/lib/sidekiq/capistrano2.rb b/lib/sidekiq/capistrano2.rb deleted file mode 100644 index 85216a22..00000000 --- a/lib/sidekiq/capistrano2.rb +++ /dev/null @@ -1,54 +0,0 @@ -Capistrano::Configuration.instance.load do - - _cset(:sidekiq_default_hooks) { true } - _cset(:sidekiq_cmd) { "#{fetch(:bundle_cmd, "bundle")} exec sidekiq" } - _cset(:sidekiqctl_cmd) { "#{fetch(:bundle_cmd, "bundle")} exec sidekiqctl" } - _cset(:sidekiq_timeout) { 10 } - _cset(:sidekiq_role) { :app } - _cset(:sidekiq_pid) { "#{current_path}/tmp/pids/sidekiq.pid" } - _cset(:sidekiq_processes) { 1 } - - if fetch(:sidekiq_default_hooks) - before "deploy:update_code", "sidekiq:quiet" - after "deploy:stop", "sidekiq:stop" - after "deploy:start", "sidekiq:start" - before "deploy:restart", "sidekiq:restart" - end - - namespace :sidekiq do - def for_each_process(&block) - fetch(:sidekiq_processes).times do |idx| - yield((idx == 0 ? "#{fetch(:sidekiq_pid)}" : "#{fetch(:sidekiq_pid)}-#{idx}"), idx) - end - end - - desc "Quiet sidekiq (stop accepting new work)" - task :quiet, :roles => lambda { fetch(:sidekiq_role) }, :on_no_matching_servers => :continue do - for_each_process do |pid_file, idx| - run "if [ -d #{current_path} ] && [ -f #{pid_file} ] && kill -0 `cat #{pid_file}`> /dev/null 2>&1; then cd #{current_path} && #{fetch(:sidekiqctl_cmd)} quiet #{pid_file} ; else echo 'Sidekiq is not running'; fi" - end - end - - desc "Stop sidekiq" - task :stop, :roles => lambda { fetch(:sidekiq_role) }, :on_no_matching_servers => :continue do - for_each_process do |pid_file, idx| - run "if [ -d #{current_path} ] && [ -f #{pid_file} ] && kill -0 `cat #{pid_file}`> /dev/null 2>&1; then cd #{current_path} && #{fetch(:sidekiqctl_cmd)} stop #{pid_file} #{fetch :sidekiq_timeout} ; else echo 'Sidekiq is not running'; fi" - end - end - - desc "Start sidekiq" - task :start, :roles => lambda { fetch(:sidekiq_role) }, :on_no_matching_servers => :continue do - rails_env = fetch(:rails_env, "production") - for_each_process do |pid_file, idx| - run "cd #{current_path} ; nohup #{fetch(:sidekiq_cmd)} -e #{rails_env} -i #{idx} -P #{pid_file} >> #{current_path}/log/sidekiq.log 2>&1 &", :pty => false - end - end - - desc "Restart sidekiq" - task :restart, :roles => lambda { fetch(:sidekiq_role) }, :on_no_matching_servers => :continue do - stop - start - end - - end -end diff --git a/lib/sidekiq/tasks/sidekiq.rake b/lib/sidekiq/tasks/sidekiq.rake deleted file mode 100644 index 6f457f4e..00000000 --- a/lib/sidekiq/tasks/sidekiq.rake +++ /dev/null @@ -1,119 +0,0 @@ -namespace :load do - task :defaults do - - set :sidekiq_default_hooks, ->{ true } - - # If you need a special boot commands - # - # set :sidekiq_cmd, ->{ "bundle exec sidekiq" } - # set :sidekiqctl_cmd, ->{ "bundle exec sidekiqctl" } - set :sidekiq_cmd, ->{ } - set :sidekiqctl_cmd, ->{ } - - # If this changes, you'll need to manually - # stop the existing sidekiq process. - set :sidekiq_pid, ->{ "tmp/sidekiq.pid" } - - # "-d -i INT -P PATH" are added automatically. - set :sidekiq_options, ->{ "-e #{fetch(:rails_env, 'production')} -L #{current_path}/log/sidekiq.log" } - - set :sidekiq_timeout, ->{ 10 } - set :sidekiq_role, ->{ :app } - set :sidekiq_processes, ->{ 1 } - end -end - -namespace :deploy do - before :starting, :check_sidekiq_hooks do - invoke 'sidekiq:add_default_hooks' if fetch(:sidekiq_default_hooks) - end -end - -namespace :sidekiq do - def for_each_process(&block) - fetch(:sidekiq_processes).times do |idx| - yield((idx == 0 ? "#{fetch(:sidekiq_pid)}" : "#{fetch(:sidekiq_pid)}-#{idx}"), idx) - end - end - - def pid_full_path(pid_path) - if pid_path.start_with?("/") - pid_path - else - "#{current_path}/#{pid_path}" - end - end - - task :add_default_hooks do - after 'deploy:starting', 'sidekiq:quiet' - after 'deploy:updated', 'sidekiq:stop' - after 'deploy:reverted', 'sidekiq:stop' - after 'deploy:published', 'sidekiq:start' - end - - desc "Quiet sidekiq (stop accepting new work)" - task :quiet do - on roles fetch(:sidekiq_role) do - for_each_process do |pid_file, idx| - if test "[ -f #{pid_full_path(pid_file)} ]" - within current_path do - if fetch(:sidekiqctl_cmd) - execute fetch(:sidekiqctl_cmd), 'quiet', "#{pid_full_path(pid_file)}" - else - execute :bundle, :exec, :sidekiqctl, 'quiet', "#{pid_full_path(pid_file)}" - end - end - end - end - end - end - - desc "Stop sidekiq" - task :stop do - on roles fetch(:sidekiq_role) do - for_each_process do |pid_file, idx| - if test "[ -f #{pid_full_path(pid_file)} ]" - within current_path do - if fetch(:sidekiqctl_cmd) - execute fetch(:sidekiqctl_cmd), 'stop', "#{pid_full_path(pid_file)}", fetch(:sidekiq_timeout) - else - execute :bundle, :exec, :sidekiqctl, 'stop', "#{pid_full_path(pid_file)}", fetch(:sidekiq_timeout) - end - end - end - end - end - end - - desc "Start sidekiq" - task :start do - on roles fetch(:sidekiq_role) do - rails_env = fetch(:rails_env, "production") - within current_path do - for_each_process do |pid_file, idx| - if !defined? JRUBY_VERSION - if fetch(:sidekiq_cmd) - execute fetch(:sidekiq_cmd), "-d -i #{idx} -P #{pid_full_path(pid_file)} #{fetch(:sidekiq_options)}" - else - execute :bundle, :exec, :sidekiq, "-d -i #{idx} -P #{pid_full_path(pid_file)} #{fetch(:sidekiq_options)}" - end - else - execute "echo 'Since JRuby doesn't support Process.daemon, Sidekiq will be running without the -d flag." - if fetch(:sidekiq_cmd) - execute fetch(:sidekiq_cmd), "-i #{idx} -P #{pid_full_path(pid_file)} #{fetch(:sidekiq_options)} >/dev/null 2>&1 &" - else - execute :bundle, :exec, :sidekiq, "-i #{idx} -P #{pid_full_path(pid_file)} #{fetch(:sidekiq_options)} >/dev/null 2>&1 &" - end - end - end - end - end - end - - desc "Restart sidekiq" - task :restart do - invoke 'sidekiq:stop' - invoke 'sidekiq:start' - end - -end