capistranoでデプロイしたらpumaを再起動するために必要だったこと
capistranoでデプロイが完了したらそのままpumaを再起動して欲しいんですが、gemや設定の追加が必要だったので、備忘録として書き残しておきます。
ご注意!!
ここに書いてあることは全てcapistrano-pumaのREADMEに書いてあります! ただ、capistrano関連の設定が個人的にややこしくて正解に行き着くのに時間がかかったので、今後のために今回の環境でうまく行った手順を控えておこうというのが、この記事の目的です。 これからデプロイされる方は、本記事の記述はあくまで参考程度に留めておいていただければと思います🙇♂️
実行環境
- ruby 2.7.1
- Rails 6.0.3.3
- capistrano 3.15.0
- puma 4.3.5
前提
とりあえずcapistranoのデフォルトのタスクは全てエラーなく完了する状態になっていることとしてます。
必要だったこと
capistrano-pumaをインストール
Gemfileに下記を追加
# group: :development ブロック内 gem "capistrano3-puma", require: false
bundle install
も忘れずに
必要なタスクを追加する
Capfileに下記を追加
require "capistrano/puma" install_plugin Capistrano::Puma install_plugin Capistrano::Puma::Daemon
pumaの設定ファイルをサーバーにアップロード
ローカルマシンのターミナル上で下記コマンドを実行
cap production puma:config
これによりデプロイ先にshared/puma.rbが生成されます。
(ここよくわかっていなくて、再確認しようと思って試しにshared/puma.rbを消してからデプロイしてみたのですが、デプロイ時に自動的にshared/puma.rbが生成され、特に問題なくデプロイできてしまいました。まあcapistrano-pumaのGitHubにこれしないとpumaが動かないよと書いてあるので、そういうものなんだと思っています・・・)
capistranoの共有ディレクトリ設定を追加
config/deploy.rbに下記を追加
append :linked_dirs, "log", "tmp/pids", "tmp/sockets"
append :linked_dirsにより、指定したフォルダがsharedに生成され、各リリースバージョン間で共有されるようになります。
以上の設定で、デプロイ終了後にpuma:restartが走ってpumaが再起動されるようになりました🙌