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