#本記事投稿のいきさつ
最近Railsの勉強を始めたが、その中でエラー対応に苦戦したためメモ代わりにここに残したいと思います。
また、不慣れのため表現や書き方など、分かりづらい部分があるかと思います。
優しい目で見ていただければ幸いです。
##エラー
Capistranoでデプロイ後にunicornを再起動をしたかったのですが、EC2でunicorn接続をした際上手く接続ができずlessコマンドでエラーログを確認。
ArgumentError: Already running on PID:~~
との表示がされていました。
##仮説
エラー文から以前のunicorn接続のプロセスが残っていると思い
ps aux | grep unicorn
入力し確認したところどうやら余分なプロセスは確認できませんでした。
もしプロセスが表示されていれば
kill プロセスid
で解決できます。しかし他に原因があるようです。
ネットで調べたところ unicorn.rb に問題がある場合にもこのエラーが発生するとのことでした。
##原因と対策
unicorn.rbを確認したところ
pid "#{app_path}tmp/pids/unicorn.pid"
の設定を発見しました。
Capistranoの導入でディレクトリの構造が変わるのですが、それに伴う設定の変更を一箇所出来ていませんでした。
そのため記述を以下に変更
pid "#{app_path}/shared/tmp/pids/unicorn.pid"
これで無事動くようになりました。
エラー文だけで判断せず調べることも重要ということを改めて再認識した事象でした。