2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Rails】Capistranoを利用した自動デプロイ実行時に発生したエラーの対処法

Posted at

某スクールの最終課題をEC2で自動デプロイする時に発生した事象。
自動デプロイツール「Capistrano」を導入し、自動デプロイを実行した際に発生したエラーの詳細と解決方法について記載します。
導入目的:デプロイ時に必要なコマンド操作が1回で済み、手動デプロイする場合に起こりうる下記問題を解消することができる。

手動デプロイで起こりがちな問題

・コマンドの打ち間違い、手順の間違いが発生する可能性がある
・手順が多く、煩わしい

発生したエラー

自動デプロイを実行する為に、ローカルターミナルで以下コマンドを実行したところ、

% bundle exec cap production deploy

以下エラーメッセージが出現。メッセージを見ると、「Bundler::GemNotFound: Could not find date-3.3.3 in any of the sources(gemfileの中に"date-3.3.3”が見つからないよ。)」とのこと。

** DEPLOY FAILED
** Refer to log/capistrano.log for details. Here are the last 20 lines:

<省略>

DEBUG [e60eb18b] 	bundler: failed to load command: rake 
(/var/www/<レポジトリ名>/shared/bundle/ruby/2.6.0/bin/rake)
DEBUG [e60eb18b] 	Bundler::GemNotFound: Could not find date-3.3.3 in any of the sources

"date-3.3.3"がgemfile内にないことが原因でエラーが発生していると推測し、gemfile内に以下を記述し、ローカル環境でbundle installを実施した上で、再度「bundle exec cap production deploy」コマンドを試したが、同じエラーが発生。

Gemfile
gem 'date', '~> 3.3', '>= 3.3.3'

エラーの原因

1人では考えても埒が明かなかったのでメンターに相談したところ、
2022/12/3にrailsの必須gemの一つであるmailが2.7.1から2.8にアップデートされたことで、
このgemバージョンで使用するdateというgemが、EC2側で取得できておらずエラーが発生しているとのこと。

解決方法

メンターに教えて頂いた以下の手順を踏めば、問題なく自動デプロイが完了しました。

①Gemfileの末尾に「gem 'mail', '2.7.1'」を追記。(mailのバージョンを下げる指定をすることで、dateのgemを取得しないようにする為。)
 *Gemfileに「gem 'date', '~> 3.3', '>= 3.3.3'」を記述した場合は、gem 'date'の記述を削除。
②Gemfile.lockの削除
③ローカルでbundle install
④コミットプッシュ
⑤EC2内で自動デプロイ実行(% bundle exec cap production deploy)
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?