目次
エラーが発生した背景
認証機能(ログイン機能)用のGem「devise」をアンイストールして、Herokuにデプロイしたらエラーが発生しました。
Herokuへのデプロイエラー
-----> Building on the Heroku-20 stack
-----> Using buildpack: heroku/ruby
-----> Ruby app detected
-----> Installing bundler 2.2.33
-----> Removing BUNDLED WITH version in the Gemfile.lock
-----> Compiling Ruby/Rails
-----> Using Ruby version: ruby-3.0.2
-----> Installing dependencies using bundler 2.2.33
Running: BUNDLE_WITHOUT='development:test' BUNDLE_PATH=vendor/bundle BUNDLE_BIN=vendor/bundle/bin BUNDLE_DEPLOYMENT=1 bundle install -j4
You are trying to install in deployment mode after changing
your Gemfile. Run `bundle install` elsewhere and add the
updated Gemfile.lock to version control.
If this is a development machine, remove the /tmp/build_cca2383a/Gemfile freeze
by running ``.
You have deleted from the Gemfile:
* devise
Bundler Output: You are trying to install in deployment mode after changing
your Gemfile. Run `bundle install` elsewhere and add the
updated Gemfile.lock to version control.
If this is a development machine, remove the /tmp/build_cca2383a/Gemfile freeze
by running ``.
You have deleted from the Gemfile:
* devise
!
! Failed to install gems via Bundler.
!
! Push rejected, failed to compile Ruby app.
! Push failed
<原因>アンイストールが不十分だった
このエラーの理由は単純でした。
Gem「devise」のアンイストールが不十分だったからです。
もう少し具体的に言えばファイル「Gemfile」から「gem ‘devise’」を削除しましたが、肝心の「bundle install」を実行してませんでした。
私がRailsに慣れていなかったので、こんな単純なミスをしてしまいました。
Gemのアンイストール方法は2通りあって、今回のように「Gemfile」を変更(gemの追加や削除)してから「bundle install」を実行する方法と、個別にコマンドで「bundle exec gem uninstall gem名 -v ‘バージョン名’」を実行する方法があります。
アンイストールすると「Gemfile.lock」が反映されますので、それをHerokuにデプロイしたらエラーなく成功しました。
コメント