Capistranoによる自動デプロイ設定で出た、Gemエラーの解消法を備忘として。
コマンド実行
% bundle exec cap production deploy
エラー内容
ターミナル実行結果
01:01 deploy:assets:precompile
01 $HOME/.rbenv/bin/rbenv exec bundle exec rake assets:precompile
01 bundler: failed to load command: rake (/var/www/************/shared/bundle/ruby/2.6.0/bin/rake)
01 Bundler::GemNotFound: Could not find date-3.3.3 in any of the sources
01 /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/spec_set.rb:86:in `block in mate…
01 /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/spec_set.rb:80:in `map!'
01 /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/spec_set.rb:80:in `materialize'
01 /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/definition.rb:170:in `specs'
01 /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/definition.rb:237:in `specs_for'
01 /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/definition.rb:226:in `requested_…
01 /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/runtime.rb:101:in `block in defi…
01 /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/runtime.rb:20:in `setup'
01 /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler.rb:149:in `setup'
01 /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/setup.rb:20:in `block in <top (r…
01 /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/ui/shell.rb:136:in `with_level'
01 /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/ui/shell.rb:88:in `silence'
01 /home/ec2-user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/setup.rb:20:in `<top (required)>'
#<Thread:0x00007fc265b3beb8@/Users/admin/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/sshkit-1.21.3/lib/sshkit/runners/parallel.rb:10 run> terminated with exception (report_on_exception is true):
Traceback (most recent call last):
エラー原因
3行目のここに注視!
Bundler::GemNotFound: Could not find date-3.3.3 in any of the sources
『date-3.3.3ていうGem探したけどないよーーーー』 って言われました。
んむ。バージョンか何かの問題だと推測。
date-3.3.3とGemfileに記述してもエラー。
調べたところ、gem mailがにアップデートにされたことが原因のよう。
解消法
ちょうど同じエラー内容だったのでこちらの記事と、こちらの記事
を参考にさせて頂きました!助かりました〜
実行方法以下引用させて頂きました。
①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)
gem mailなのにgem dateにかかってくるのもまだ理解できていないですが、
取り急ぎこれにて解決できやっとこさ自動デプロイ完結できました!!