#はじめに
ポートフォリオ作成中で、自動デプロイ時にUnicornに関するエラーが発生しました。
エラーの内容についてはファイルの場所が悪かったという簡単な内容だったのですが、ログの確認を怠り
(というよりログの確認方法を理解していなかった)、解決までに時間を要したので、コマンドを含め記述していきたいと思います。
#環境
Ruby on Rails '6.0.0'
Ruby '2.6.5'
#エラー内容
これまでCapistranoによる自動デプロイはできていました。ローカルでアプリケーションを編集後、いつもの
ようにデプロイのコマンドを実行すると、下記のエラーが出現しました。
01:12 unicorn:start
(省略)
SSHKit::Command::Failed: bundle exit status: 1
bundle stdout: Nothing written
bundle stderr: master failed to start, check stderr log for details
(省略)
#解決に向けて
エラー文を参照すると、check stderr log for detailsとの記述があるため、ログの確認を
しようと試みましたが、どうやって確認するのだろうというところから始まったので、記述します。
#アプリケーションのディレクトリへ移動
[ec2-user@ip-172-31-23-189~]$ cd /var/www/アプリケーション名
#currentディレクトリへ移動
[ec2-user@ip-172-31-23-189 <リポジトリ名>]$ cd current
#logディレクトリへ移動
[ec2-user@ip-172-31-23-189 current]$ cd log
#logの中に入っているファイルの情報を表示
[ec2-user@ip-172-31-23-189 log]$ ls
production.log unicorn.stderr.log unicorn.stdout.log
tail -f unicorn.stderr.log
or
cat unicorn.stderr.log
tail -f : 最新のログを10行表示する
cat : 全てのログを表示する
今回はまず「tail -f」を用いて見てみましたが、原因は分からず。
そのため「cat」コマンドを使用しログを全部表示させました。すると
(省略)
bundler: failed to load command: unicorn (/var/www/myapp/shared/bundle/ruby/2.6.0/bin/unicorn)
Zeitwerk::NameError: expected file /var/www/myapp/releases/20201226010858/app/controllers/users/users_controller.rb to define constant Users::UsersController, but didn't
上記のエラーログを発見!!とりあえず、uses_controller.rbに問題があるんだなということは把握。そこで解決に至りました。
#おわりに
ログを確認する大切さについて、改めて気付きました。エラー文をとりあえずコピペして、検索するということばかりやっていても
解決はできないことを今回のエラーを通して痛感しました。。。。引き続き学習に励みます!!!!