capistrano-sidekiqが微妙だったので、
自分でタスクを書いた。
append :linked_files, "config/database.yml", "config/secrets.yml", "config/sidekiq.yml" set :sidekiq_pid_path, -> { File.join(shared_path, 'tmp', 'pids', 'sidekiq.pid') } set :sidekiq_config, -> { File.join(shared_path, 'config', 'sidekiq.yml') } namespace :sidekiq do task :kill do on roles(:app) do execute "kill -TERM `cat #{fetch :sidekiq_pid_path}`; true" end end task :restart do on roles(:app) do invoke 'sidekiq:kill' within current_path do execute "su - USER_NAME -c 'cd /var/www/shopify_data_manager/current && $HOME/.rbenv/bin/rbenv exec bundle exec sidekiq -C #{fetch :sidekiq_config} --daemon'" end end end after 'deploy:finishing', 'sidekiq:restart' end namespace :deploy do desc 'upload linked_files' task :upload do on roles(:app) do |host| execute :mkdir, '-p', "#{shared_path}/config" upload!('config/database.yml',"#{shared_path}/config/database.yml") upload!('config/secrets.yml',"#{shared_path}/config/secrets.yml") upload!('config/sidekiq.yml',"#{shared_path}/config/sidekiq.yml") end end ... end
最初は、Sidekiqを起動するコマンドを以下のように書いていた。
execute :bundle, :exec, "sidekiq -e development -C #{fetch :sidekiq_config}"
しかし、これだと何故か動かなくて、
いろいろ調べているうちに、以下のページからヒントを貰い、
monitoring - monitでsidekiqの停止を感知できるが、sidekiqを自動起動できない - スタック・オーバーフロー
ユーザを変更してみたら、動作した。
[参考]
Capistranoでunicornとsidekiqをシンプルにrestartする - Qiita
capistrano-sidekiqを使うのをやめる - Qiita