概要
こちらは前項の続きになります。
Herokuへのデプロイができないエラー:Failed to install gems via Bundler. の改善。
ただ、別のエラーになりますので、「Could not detect rake tasks」と出た方は、こちら単独でもご参考にしていただければ幸いです。
使用環境
Ruby on Rails
Ruby 2.6.5
bundler (default2.2.3, 2.1.4)
経緯
Herokuへのデプロイ
% git push heroku master
を実施したところ下記のようなエラーが出ました。
Could not detect rake tasks
remote: ! ensure you can run `$ bundle exec rake -P` against your app
remote: ! and using the production group of your Gemfile.
仮説と試したこと
$ bundle exec rake -Pの実施。
プロンプトがbashのものになっていますが、私の環境はzshですので、__%__です。
したがって、エラーの表記通り下記を試してみましたが、だめでした。
% bundle exec rake -P
またもbundlerがおかしい??
解決方法
前項にてこのアプリにはHerokuに対応したbundler 2.1.4を導入しています。
% bundler -v
Bundler 2.1.4
一度アンインストールして再インストールを試みます。
% gem uninstall bundler
すると、下記のように弾かれました。
Gem bundler-2.2.3 cannot be uninstalled because it is a default gem
Remove executables:
bundler
in addition to the gem? [Yn] y
Removing bundler
Successfully uninstalled bundler-2.1.4
※in addition to the gem? [Yn]ではイエスを意味する「y」を打ち込んでます。
どうもbundler 2.2.3がデフォルト設定されており、アンインストールできるのは2.1.4だけのようでした。
ではこのデフォルト設定を解除して、2.1.4だけを使えるようにしたら、Herokuへのデプロイができるのではないでしょうか。
①gemのパスを確認。
% gem environment
〜中略〜
- INSTALLATION DIRECTORY: /Users/ユーザー名/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0
〜中略〜
②上記パスまで、カレントディレクトリを移動
% cd /Users/ユーザー名/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0
% ls
〜中略〜 specifications
③specificationsの中にdefaultがあることを確認。
% cd specifications
% ls
〜中略〜 default
④defaultの削除
% rm -rf default
⑤一度ホームディレクトリに戻り、gemのリストまでディレクトリ移動し、gem listを確認。
% cd /Users/ユーザー名/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0
% gem list
ここでbundlerの確認をしますが、仮説の時点で一度bundler 2.1.4はアンインストールされています。
かつ、この⑤の手順でdefaultが削除されましたので、gem listのなかにbundlerの記述はないはずです。
⑥デプロイしたいアプリケーションまでディレクトリ移動し、再度bundler 2.1.4をインストール
% gem install bundler -v 2.1.4
インストールに成功し、ここでgem listを確認すると
bundler (2.1.4)
しっかりdefault 2.2.3が消えている上に2.1.4が無事残っています。
⑦念のために、一度bundle installします。
% bundle install
⑧gitに一度プッシュした上で、Herokuへデプロイ!!!!!
% git push heroku master
〜中略〜
remote: Verifying deploy... done.
##### 無事通りました!!
考察
前項と続けて、どちらもbundlerに関するエラーでした。
特に、gemのなかでdefault設定のものがあると、解除するのに結構手間取ることがわかりました。
これ以降はgemのエラーでは手こずる事はないといいのですが・・・。
どなたかのご参考になれば幸いです。
ここまでご覧いただいた方、ありがとうございました。