こんにちは。Takitaです。
gemのバージョンがアップがあると勝手にプルリクを作成してくれるdependabotを使っています。capistranoのバージョンがそもそも古かったこともあり、dependabotがcapistranoのバージョンアップのプルリクをあげてくれたのでマージしたところ、デプロイがこけるようになりました。
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as takita@tackeyy.com: Don't know how to build task 'puma:restart' (see --tasks)
Don't know how to build task 'puma:restart' (see --tasks)
config/deploy.rb
(省略)
after 'deploy:publishing', 'deploy:restart'
namespace :deploy do
task :restart do
on roles(:app), in: :sequence, wait: 15 do
invoke 'puma:restart'
end
end
(省略)
capistrano-puma
を使用している場合、デプロイが成功した時に capistrano-puma
がpumaを再起動してくれますが、そのこと知らずに上記のようなタスクを書いていたため、 capistrano-puma
にpumaの再起動を任せることにしました。
config/deploy.rb
(省略)
-after 'deploy:publishing', 'deploy:restart'
namespace :deploy do
- task :restart do
- on roles(:app), in: :sequence, wait: 15 do
- invoke 'puma:restart'
- end
- end
-
(省略)
Capfile
+install_plugin Capistrano::Puma
install_plugin Capistrano::Puma
を追加することでpumaのデフォルトタスクが利用できるようになり、deploy後のpuma再起動のフックもしてくれます。
https://github.com/seuros/capistrano-puma/blob/master/lib/capistrano/puma.rb#L91
https://github.com/seuros/capistrano-puma/blob/master/lib/capistrano/tasks/puma.rake
これらの修正は以下のコミットで確認できます。
https://github.com/tackeyy/blog/commit/4b771d69e8e73e578fddaeb29a436a40ef8324c9
https://github.com/seuros/capistrano-puma#usage
https://stackoverflow.com/a/39812330/7807559