Herokuへpushしたら"Detected sqlite3 gem which is not supported on Heroku"になったので、Gemfile直したけど、反映されないやつ


タイトルの通りです。
エラー文で検索するとGemfile直してbundle installgit push herokuし直せば
いけるよって書いてあるの多いんですが、初学者さんはgit commit忘れてハマることが
ありそうなので書いておきます。(はい、地味に私がハマりました)

では最初から。

1. エラー内容

railsアプリなどをHerokuへpushしたときに下記のようなエラーがでることがあります。

# 省略
remote:  !
remote:  !     Failed to install gems via Bundler.
remote:  !     Detected sqlite3 gem which is not supported on Heroku:
remote:  !     https://devcenter.heroku.com/articles/sqlite3
remote:  !
# 省略

Gemfileにsqlite3のgemを適用する環境を絞らずに記載していると出ます。
HerokuはSQLite3をサポートしていないので、代わりにサポートしているPostgresqlを
Gemfileに追加してあげる必要があります。

2. Gemfileの修正

変更前Gemfile
gem 'sqlite3'
変更後Gemfile
# gemのバージョンは適宜変えてください

# 開発・テスト環境ではSQLite3を使う
group :development, :test do
  gem 'sqlite3'
end

# 本番環境ではPostgresqlを使う
group :production do
  gem 'pg', '0.20.0'
end

3. bundle install

Herokuにpushするときには、Gemfile.lockの中身を参照されるので、bundle installし直して
Gemfile.lockを最新化します。

$ bundle install

4. git commit

git使い始めだと忘れがち。Herokuへアプリをアップロードするときは、gitで管理しているファイルを
アップロードします。Gemfile.lockもその管理対象なので、コミットしてあげないとHerokuに適用されません。

$ git add -A
$ git commit -m "[Update] Gemfile修正"

5. Herokuへpush

$ git push heroku master

以上です。