😢

WebアプリケーションをCapistranoで自動デプロイする設定を行った際に遭遇したエラー

2023/06/07に公開

カリキュラムで作成したWebアプリをAWSへデプロイする設定に取り組みました。
設定の最後にCapistranoというGemを使用して自動デプロイを行えるようにするのですが、ここで起こったエラーについて書き残します。

Capistrano(キャピストラーノ)とは?

数あるデプロイ自動化ツールのなかでも、最もポピュラーなものだそう。

https://capistranorb.com/

自動デプロイツールを使うことで煩雑なデプロイ操作を簡略化することができ、結果としてコマンドの打ち間違い・手順の間違いによるエラーを減らしてくれます。
今回はその初回設定作業を行っていました。

遭遇したエラー内容

バージョン情報とOS
  • ruby '2.6.5'
  • rails '6.0.0'
  • Windows11

エラーは諸々の設定が終わって最後、自動デプロイを実行した際に発生しました。

# 自動デプロイ実行コマンド
bundle exec cap production deploy
# エラー発生個所
00:17 deploy:assets:precompile
      01 $HOME/.rbenv/bin/rbenv exec bundle exec rake assets:precompile
      01 bundler: failed to load command: rake (/var/www/XXXXXXX/shared/bundle/ruby/2.6.0/bin/rake)
      01 Bundler::GemNotFound: Could not find date-3.3.3 in any of the sources

原因究明

logディレクトリのcapistrano.logを確認してみると、以下のようなログが。

 DEBUG [b1e07a26] 	The following gems are missing
 DEBUG [b1e07a26] 	 * date (3.3.3)

dateというGemが無いことによるエラーのようでしたので、google検索をかけてみると下記記事がヒットしました。

https://qiita.com/ksmj/items/776b70654a7deb39a56e

状況がまったく同じ!(先輩受講生っぽい…)
念のためメンターさんにも確認したところ、同様の返答でした。

mailのバージョン履歴が確認できるサイト
※サイト右側の「差分」リンクから変更箇所を確認可能。
※※私程度のレベルでは読んでもよくわかんなかった…。

解消方法

mailのバージョンを2.7.1に固定してあげればOKとのことで、下記を実施しエラー解消となりました🙌

  1. Gemfileの末尾に「gem 'mail', '2.7.1'」を追記
  2. Gemfile.lockの削除
  3. bundle install
  4. コミット・プッシュ
  5. 自動デプロイ実行

Discussion