LoginSignup
4
3

More than 3 years have passed since last update.

Herokuへのデプロイができないエラー:Could not detect rake tasks の改善。

Last updated at Posted at 2021-02-03

概要

こちらは前項の続きになります。
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のエラーでは手こずる事はないといいのですが・・・。

どなたかのご参考になれば幸いです。
ここまでご覧いただいた方、ありがとうございました。

4
3
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
4
3