no-image

PostgreSQLでHerokuプッシュが成功したときに試したこと

以前の記事で、Herokuへのデプロイ時にPostgresql関連のエラーが出て苦戦したことがありました。

こちら

そのときはPostgresqlの代わりにmysqlで代用したことでheroku openさせることができました。

今回はHerokuでPostgresqlを使い、同じようなエラーは出たけど、それも解決できたのでご紹介します。  

 

作業環境

Rails 5.0.1

Ruby 2.5.0

mysql2 0.4.10 (ローカル環境)

 

エラー内容:Gem::LoadError: Specified ‘postgresql‘ for database adapter, but the gem is not loaded.

(エラー発生までの経緯)Gemfileにpgを追加

まず、自分の作業経緯を振り返る。

1:Gemfileにpgを追加

gem 'pg', group: :production

group: :productionをつけることで、本番環境ではPostgresqlを使うよう指定しています。

 

2: bundle installを実行

 

3:database.ymlに以下の記述を追加

production:
<<: *default
adapter: postgresql
encoding: unicode
pool: 5

※もともとのproduction:~の記述箇所を上の内容に書き換える

※ymlファイルでは改行場所やスペースなどでエラーが出ることがあるので、既存の記述と見比べるなどして特に気を付ける。

 

4:この状態でherokuにプッシュまで行う

git add . git commit -m "コメント" heroku create (<=初回の場合のみ実行するコマンド)
git push heroku master  <=ここでエラー発生!

 

5 :発生したpgエラー

remote:        Gem::LoadError: Specified 'postgresql' for database adapter, but the gem is not loaded. Add `gem 'pg'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord).

対処:pgのバージョンを0.19.0に指定

参考記事。バージョン指定がポイントのようです。

Gemfileでpgの記述をバージョン指定して、以下のように書き換えました。

gem 'pg', '~> 0.19.0', group: :production

 

これでbundle install

を実行する。

そして再度herokuにプッシュまで行う git add . git commit -m "コメント" git push heroku master

うまくいきました!!

 

これで heroku run rake db:migrateを実行

 

heroku openを実行するとアプリが開く。

 

ちなみに bundle installしたときの画面で、ターミナルがこのようなことを言っていた。

Fetching pg 0.19.0 (was 1.0.0)
Installing pg 0.19.0 (was 1.0.0) with native extensions

pgは、もともと1.0.0だったけど

0.19.0にバージョン下げてたようですがうまくいった。

 

バージョンの違いによるエラー?

まとめ

成功した手順をまとめると…

pgのバージョンを0.19.0指定で記述

database.yml書き換え

git add とgit commitをする

 

Postgresqlを使ってherokuにプッシュが成功しました。

 

ちなみに私はこのあとのheroku run rake db:migrate

実行で別のエラーが出まして、 別記事に書きました↓

 

Qiitaでも書きました↓

 

ここまで読んでくださり、ありがとうございました^^