😢
WebアプリケーションをCapistranoで自動デプロイする設定を行った際に遭遇したエラー
カリキュラムで作成したWebアプリをAWSへデプロイする設定に取り組みました。
設定の最後にCapistranoというGemを使用して自動デプロイを行えるようにするのですが、ここで起こったエラーについて書き残します。
Capistrano(キャピストラーノ)とは?
数あるデプロイ自動化ツールのなかでも、最もポピュラーなものだそう。
自動デプロイツールを使うことで煩雑なデプロイ操作を簡略化することができ、結果としてコマンドの打ち間違い・手順の間違いによるエラーを減らしてくれます。
今回はその初回設定作業を行っていました。
遭遇したエラー内容
バージョン情報と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検索をかけてみると下記記事がヒットしました。
状況がまったく同じ!(先輩受講生っぽい…)
念のためメンターさんにも確認したところ、同様の返答でした。
mailのバージョン履歴が確認できるサイト
※サイト右側の「差分」リンクから変更箇所を確認可能。
※※私程度のレベルでは読んでもよくわかんなかった…。
解消方法
mailのバージョンを2.7.1に固定してあげればOKとのことで、下記を実施しエラー解消となりました🙌
- Gemfileの末尾に「gem 'mail', '2.7.1'」を追記
- Gemfile.lockの削除
- bundle install
- コミット・プッシュ
- 自動デプロイ実行
Discussion